このドキュメントでは、 Google Cloud Serverless for Apache Spark のリソース使用量をプロファイリングする方法について説明します。Cloud Profiler を使用すると、アプリケーションの CPU 使用率とメモリ割り当ての情報が継続的に収集、報告されます。次の表に示すプロファイリング プロパティを使用して、バッチを送信するかセッション ワークロードを作成するときにプロファイリングを有効にできます。Apache Spark 向けGoogle Cloud Serverless は、関連する JVM オプションをワークロードに使用される spark.driver.extraJavaOptions
構成と spark.executor.extraJavaOptions
構成に追加します。
オプション | 説明 | 値 | デフォルト |
---|---|---|---|
dataproc.profiling.enabled |
ワークロードのプロファイリングを有効にする | true または false |
false |
dataproc.profiling.name |
Profiler サービスのプロファイル名 | PROFILE_NAME | spark-WORKLOAD_TYPE-WORKLOAD_ID(ここで、 ) |
注:
- Apache Spark 向け Serverless は、Profiler バージョンをバッチ UUID またはセッション UUID に設定します。
- Profiler は、
Spark
、PySpark
、SparkSql
、SparkR
の Spark ワークロード タイプをサポートしています。 - Profiler がデータを収集してプロジェクトにアップロードできるようにするには、ワークロードが 3 分以上実行される必要があります。
SparkConf
を作成し、コードでextraJavaOptions
を設定することで、ワークロードとともに送信されたプロファイリング オプションをオーバーライドできます。ワークロードの送信時にextraJavaOptions
プロパティを設定しても、ワークロードとともに送信されたプロファイリング オプションはオーバーライドされません。
バッチ送信で使用される Profiler オプションの例については、PySpark バッチ ワークロードの例をご覧ください。
プロファイリングの有効化
ワークロードでプロファイリングを有効にするには、次の操作を行います。
- Profiler を有効にする
- カスタム VM サービス アカウントを使用している場合は、カスタム VM サービス アカウントに Cloud Profiler エージェントのロールを付与します。このロールには、Profiler に必要な権限が含まれています。
- バッチ ワークロードの送信時またはセッション テンプレートの作成時に、プロファイリング プロパティを設定します。
PySpark バッチ ワークロードの例
次の例では、gcloud CLI を使用して、プロファイリングが有効になっている PySpark バッチ ワークロードを送信します。
gcloud dataproc batches submit pyspark PYTHON_WORKLOAD_FILE \ --region=REGION \ --properties=dataproc.profiling.enabled=true,dataproc.profiling.name=PROFILE_NAME \ -- other args
次の 2 つのプロファイルが作成されます。
PROFILE_NAME-driver
は、Spark ドライバタスクをプロファイリングします。PROFILE_NAME-executor
は、Spark エグゼキュータ タスクをプロファイリングします。
プロファイルを表示する
Google Cloud コンソールの Profiler でプロファイルを表示できます。