Apache Spark 用 Google Cloud Serverless のリソース使用量をプロファイリングする

このドキュメントでは、 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。ここで、
  • WORKLOAD_TYPE が batch または session に設定されている
  • WORKLOAD_ID が batchId または sessionId に設定されています

注:

  • Apache Spark 向け Serverless は、Profiler バージョンをバッチ UUID またはセッション UUID に設定します。
  • Profiler は、次の Spark ワークロード タイプをサポートしています。SparkPySparkSparkSqlSparkR
  • Profiler がデータを収集してプロジェクトにアップロードできるようにするには、ワークロードが 3 分以上実行される必要があります。
  • SparkConf を作成し、コードで extraJavaOptions を設定することで、ワークロードとともに送信されたプロファイリング オプションをオーバーライドできます。ワークロードの送信時に extraJavaOptions プロパティを設定しても、ワークロードとともに送信されたプロファイリング オプションはオーバーライドされません。

バッチ送信で使用される Profiler オプションの例については、PySpark バッチ ワークロードの例をご覧ください。

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

ワークロードでプロファイリングを有効にするには、次の操作を行います。

  1. Profiler を有効にする
  2. カスタム VM サービス アカウントを使用している場合は、カスタム VM サービス アカウントに Cloud Profiler エージェントのロールを付与します。このロールには、Profiler に必要な権限が含まれています。
  3. バッチ ワークロードの送信時またはセッション テンプレートの作成時に、プロファイリング プロパティを設定します。

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 でプロファイルを表示できます。

次のステップ