Cloud Profiler

Cloud Profiler を使用すると、アプリケーションの CPU 使用率とメモリ割り当ての情報が継続的に収集、報告されます。

要件:

  • Profiler では、Dataproc Hadoop と Spark のジョブタイプ(Spark、PySpark、SparkSql、SparkR)のみがサポートされています。

  • Profiler がデータを収集してプロジェクトにアップロードできるようになるには、ジョブが 3 分以上実行される必要があります。

Dataproc は、cloud.profiler.enable と他の cloud.profiler.* プロパティを認識(プロファイラ オプションを参照)し、適切なプロファイラ JVM オプションを次の構成に追加します。

  • Spark: spark.driver.extraJavaOptions および spark.executor.extraJavaOptions
  • MapReduce: mapreduce.task.profile と他の mapreduce.task.profile.* プロパティ

プロファイリングの有効化

Dataproc Spark ジョブと Hadoop ジョブで Profiler を有効にして使用するには、次の手順を実行します。

  1. Profiler を有効にする

  2. サービス アカウント スコープmonitoring に設定して Dataproc クラスタを作成し、クラスタがプロファイラ サービスと通信できるようにします。

  3. カスタム VM サービス アカウントを使用している場合は、Cloud Profiler エージェントのロールをカスタム VM サービス アカウントに付与します。このロールには、必要なプロファイラ サービスの権限が含まれています。

gcloud

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

Profiler オプションを付けて Dataproc ジョブを送信する

  1. 次の 1 つ以上の Profiler オプションを使用してDataproc Spark や Hadoop ジョブを送信します。
    オプション 説明 必須 / 省略可 デフォルト メモ
    cloud.profiler.enable ジョブのプロファイリングを有効にする true または false 必須 false
    cloud.profiler.name Profiler Service でプロファイルを作成するときに使用する名前 profile-name 省略可 Dataproc ジョブ UUID
    cloud.profiler.service.version プロファイラの結果を識別するための、ユーザー指定の文字列。 Profiler Service Version 省略可 Dataproc ジョブ UUID
    mapreduce.task.profile.maps プロファイリングするマップタスクの数値範囲(例: 最大 100 の場合は「0-100」を指定) number range 省略可 0-10000 Hadoop Mapreduce ジョブにのみ適用する
    mapreduce.task.profile.reduces プロファイリングするレデューサ タスクの数値範囲(例: 最大 100 の場合は「0-100」を指定) number range 省略可 0-10000 Hadoop Mapreduce ジョブにのみ適用する

PySpark の例

Google Cloud CLI

PySpark ジョブの送信とプロファイリングの例:

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

次の 2 つのプロファイルが作成されます。

  1. profiler_name-driver は、Spark ドライバタスクをプロファイリングします。
  2. profiler_name-executor は、Spark エグゼキュータ タスクをプロファイリングします。

たとえば、profiler_name が「spark_word_count_job」の場合、spark_word_count_job-driver プロファイルと spark_word_count_job-executor プロファイルが作成されます。

Hadoop の例

gcloud CLI

Hadoop(TeraGen MapReduce)ジョブの送信とプロファイリングの例:

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

プロファイルを表示

Google Cloud コンソールの Profiler でプロファイルを表示します。

次のステップ