Cloud Profiler

O Cloud Profiler coleta e relata continuamente o uso da CPU do aplicativo e as informações de alocação de memória.

Requisitos:

  • O Profiler é compatível apenas com os tipos de job do Dataproc Hadoop e Spark (Spark, PySpark, SparkSql e SparkR).

  • Os jobs precisam ser executados por mais de três minutos para permitir que o Profiler colete e faça upload de dados para seu projeto.

O Dataproc reconhece cloud.profiler.enable e as outras propriedades cloud.profiler.* (consulte Opções do criador de perfil) e, em seguida, anexa as opções relevantes da JVM do criador de perfil às seguintes configurações:

  • Spark: spark.driver.extraJavaOptions e spark.executor.extraJavaOptions
  • MapReduce: mapreduce.task.profile e outras propriedades mapreduce.task.profile.*

Ativar criação de perfil

Conclua as etapas a seguir para ativar e usar o Profiler nos jobs Spark e Hadoop do Dataproc.

  1. Ative o criador de perfil.

  2. Crie um cluster do Dataproc com escopos de conta de serviço definidos como monitoring para permitir que o cluster fale com o serviço de criação de perfil.

  3. Se você estiver usando um conta de serviço de VM personalizada, conceda o papel Agente do Cloud Profiler à conta de serviço de VM personalizada. Esse papel contém as permissões necessárias do serviço de perfil.

gcloud

gcloud dataproc clusters create cluster-name \
    --scopes=cloud-platform \
    --region=region \
    other args ...

Enviar um job do Dataproc com as opções do Profiler

  1. Envie um job do Spark ou do Hadoop do Dataproc com uma ou mais das seguintes opções do Profiler:
    Opção Descrição Valor Obrigatório/Opcional Padrão Notas
    cloud.profiler.enable Ativar a criação de perfil do job true ou false Valor false
    cloud.profiler.name Nome usado para criar perfil no serviço Profiler profile-name Opcional UUID de job do Dataproc
    cloud.profiler.service.version Uma string fornecida pelo usuário para identificar e distinguir os resultados do criador de perfil. Profiler Service Version Opcional UUID de job do Dataproc
    mapreduce.task.profile.maps Intervalo numérico de tarefas de mapa para o perfil (por exemplo, para até 100, especifique "0-100") number range Opcional 0-10000 Aplica-se apenas a jobs de MapReduce do Hadoop
    mapreduce.task.profile.reduces Intervalo numérico de tarefas de redutor para criar o perfil (por exemplo: até 100, especifique "0 a 100") number range Opcional 0-10000 Aplica-se apenas a jobs de MapReduce do Hadoop

Exemplo de PySpark

Google Cloud CLI

Envio de job do PySpark com exemplo de criação de perfil:

gcloud dataproc jobs submit pyspark python-job-file \
    --cluster=cluster-name \
    --region=region \
    --properties=cloud.profiler.enable=true,cloud.profiler.name=profiler_name,cloud.profiler.service.version=version \
    --  job args

Dois perfis serão criados:

  1. profiler_name-driver para criar o perfil das tarefas do driver Spark
  2. profiler_name-executor para criar o perfil das tarefas do executor do spark.

Por exemplo, se o profiler_name for "spark_word_count_job", os perfis spark_word_count_job-driver e spark_word_count_job-executor serão criados.

Exemplo do Hadoop

CLI da gcloud

Envio de job do Hadoop (teragen mapreduce) com exemplo de criação de perfil:

gcloud dataproc jobs submit hadoop \
    --cluster=cluster-name \
    --region=region \
    --jar=jar-file \
    --properties=cloud.profiler.enable=true,cloud.profiler.name=profiler_name,cloud.profiler.service.version=version \
    --  teragen 100000 gs://bucket-name

Ver perfis

Ver perfis do Profiler em no console do Google Cloud.

A seguir