Cloud Profiler

Cloud Profiler erfasst und meldet kontinuierlich Informationen zur CPU-Auslastung und Speicherzuweisung der Anwendung.

Voraussetzungen:

  • Profiler unterstützt nur Jobtypen von Dataproc Hadoop und Spark (Spark, PySpark, SparkSql und SparkR).

  • Jobs müssen länger als 3 Minuten ausgeführt werden, damit Profiler Daten zum Projekt erfassen und hochladen kann.

Dataproc erkennt cloud.profiler.enable und die anderen cloud.profiler.*-Attribute (siehe Profileroptionen) und hängt dann die relevanten Profiler-JVM-Optionen an die folgenden Konfigurationen an:

  • Spark: spark.driver.extraJavaOptions und spark.executor.extraJavaOptions
  • MapReduce: mapreduce.task.profile und andere mapreduce.task.profile.*-Attribute

Profiling aktivieren

Führen Sie die folgenden Schritte aus, um den Profiler für Ihre Spark- und Hadoop-Jobs zu aktivieren und zu verwenden.

  1. Aktivieren Sie den Profiler.

  2. Erstellen Sie einen Dataproc-Cluster, bei dem Dienstkontobereiche auf monitoring gesetzt sind, damit der Cluster mit dem Profiler-Dienst kommunizieren kann.

  3. Wenn Sie ein benutzerdefiniertes VM-Dienstkonto verwenden, gewähren Sie dem benutzerdefinierten VM-Dienstkonto die Rolle Cloud Profiler Agent. Diese Rolle enthält die erforderlichen Berechtigungen für den Profiler-Dienst.

gcloud

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

Dataproc-Job mit Profiler-Optionen senden

  1. Dataproc Spark- oder Hadoop-Job mit einer oder mehreren der folgenden Profiler-Optionen senden:
    Option Beschreibung Wert Erforderlich/Optional Default Hinweise
    cloud.profiler.enable Profilerstellung für den Job aktivieren true oder false Erforderlich false
    cloud.profiler.name Name zum Erstellen des Profils für den Profiler-Dienst profile-name Optional Dataproc-Job-UUID
    cloud.profiler.service.version Ein vom Nutzer bereitgestellter String zur Identifizierung und Unterscheidung von Profiler-Ergebnissen. Profiler Service Version Optional Dataproc-Job-UUID
    mapreduce.task.profile.maps Numerischer Bereich von Mapper-Aufgaben für die Profilerstellung (Beispiel: Geben Sie für bis zu 100 "0-100" an). number range Optional 0-10000 Gilt nur für Hadoop-Mapreduce-Jobs
    mapreduce.task.profile.reduces Numerischer Bereich von Reducer-Aufgaben für die Profilerstellung (Beispiel: Geben Sie für bis zu 100 "0-100" an). number range Optional 0-10000 Gilt nur für Hadoop-Mapreduce-Jobs

PySpark-Beispiel

Google Cloud CLI

PySpark-Job mit Profilerstellung senden – Beispiel:

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

Es werden zwei Profile erstellt:

  1. profiler_name-driver zur Profilerstellung für Spark-Treiberaufgaben
  2. profiler_name-executor zur Profilerstellung der Spark Executor-Aufgaben

Beispiel: Wenn profiler_name "spark_word_count_job" ist, werden die Profile spark_word_count_job-driver und spark_word_count_job-executor erstellt.

Hadoop-Beispiel

gcloud-CLI

Hadoop-Job (teragen mapreduce) mit Profilerstellung senden – Beispiel:

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

Profile anzeigen

Sehen Sie sich Profile im Profiler in der Google Cloud Console an.

Weitere Informationen