Cloud Profiler

Cloud Profiler raccoglie e genera report in modo continuativo sull'utilizzo della CPU e sull'allocazione della memoria delle applicazioni.

Requisiti:

  • Profiler supporta solo i tipi di job Hadoop e Spark di Dataproc (Spark, PySpark, SparkSql e SparkR).

  • I job devono essere eseguiti per più di 3 minuti per consentire a Profiler di raccogliere e caricare i dati nel tuo progetto.

Dataproc riconosce cloud.profiler.enable e le altre proprietà cloud.profiler.* (vedi Opzioni del profiler) e poi aggiunge le opzioni JVM del profiler pertinenti alle seguenti configurazioni:

  • Spark: spark.driver.extraJavaOptions e spark.executor.extraJavaOptions
  • MapReduce: proprietà mapreduce.task.profile e altre proprietà mapreduce.task.profile.*

Attiva la profilazione

Completa i seguenti passaggi per attivare e utilizzare Profiler nei job Dataproc Spark e Hadoop.

  1. Attiva il Profiler.

  2. Crea un cluster Dataproc con gli ambiti dell'account di servizio impostati su monitoring per consentire al cluster di comunicare con il servizio di profilazione.

  3. Se utilizzi un account di servizio VM personalizzato, concedi il ruolo Agente di Cloud Profiler all'account di servizio VM personalizzato. Questo ruolo contiene le autorizzazioni richieste per il servizio di profilazione.

gcloud

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

Invia un job Dataproc con le opzioni di Profiler

  1. Invia un job Dataproc Spark o Hadoop con una o più delle seguenti opzioni di Profiler:
    Opzione Descrizione Valore Obbligatorio/Facoltativo Predefinito Note
    cloud.profiler.enable Attiva la profilazione del job true o false Obbligatorio false
    cloud.profiler.name Nome utilizzato per creare il profilo nel servizio Profiler profile-name Facoltativo UUID del job Dataproc
    cloud.profiler.service.version Una stringa fornita dall'utente per identificare e distinguere i risultati del profiler. Profiler Service Version Facoltativo UUID del job Dataproc
    mapreduce.task.profile.maps Intervallo numerico delle attività di mappatura da profilare (ad esempio, per un massimo di 100, specifica "0-100") number range Facoltativo 0-10000 Si applica solo ai job MapReduce di Hadoop
    mapreduce.task.profile.reduces Intervallo numerico delle attività di riduzione da profilare (ad esempio, per un massimo di 100, specifica "0-100") number range Facoltativo 0-10000 Si applica solo ai job MapReduce di Hadoop

Esempio PySpark

Google Cloud CLI

Esempio di invio di un job PySpark con profilazione:

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

Verranno creati due profili:

  1. profiler_name-driver per profilare le attività del driver Spark
  2. profiler_name-executor per profilare le attività dell'eseguitore Spark

Ad esempio, se profiler_name è "spark_word_count_job", vengono creati i profili spark_word_count_job-driver e spark_word_count_job-executor.

Esempio di Hadoop

Interfaccia a riga di comando gcloud

Invio di un job Hadoop (teragen mapreduce) con esempio di profilazione:

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

Visualizza profili

Visualizza i profili da Profiler nella console Google Cloud.

Passaggi successivi