Spark ワークロードの自動チューニング

Spark 構成オプションの数が多く、それらのオプションがワークロードに与える影響を評価するのが難しいため、パフォーマンスと回復性を重視して Spark ワークロードを最適化するのは困難です。Dataproc サーバーレスの自動チューニングは、Spark の最適化のベスト プラクティスとワークロード実行の分析に基づいて、繰り返される Spark ワークロードに Spark 構成設定を自動的に適用することで、手動ワークロード構成に代わる手段を提供します。

Dataproc サーバーレス自動チューニングに申し込む

このページで説明する Dataproc サーバーレス自動チューニングプレビュー リリースへのアクセスに登録するには、BigQuery の Gemini のプレビューサインアップフォームに記入して提出してください。フォームが承認されると、フォームにリストされているプロジェクトはプレビュー機能にアクセスできるようになります。

利点

Dataproc サーバーレスの自動チューニングには、次の利点があります。

  • パフォーマンスの向上: パフォーマンスを向上させる最適化の調整
  • 迅速な最適化: 時間のかかる手動構成テストを回避する自動構成
  • 復元性の向上: メモリ関連の障害を回避する自動メモリ割り当て

制限事項

Dataproc サーバーレスの自動チューニングには次の制限があります。

  • 自動調整は計算され、ワークロードの 2 回目以降の実行に適用されます。Dataproc サーバーレスの自動調整はワークロードの履歴を使用して最適化を行うため、繰り返しワークロードの初回実行は自動スケーリングされません。
  • メモリの縮小はサポートされていません。
  • 自動チューニングは、実行中のワークロードに遡及的には適用されず、新しく送信されたワークロード コホートにのみ適用されます。

コホートの自動チューニング

自動チューニングは、バッチ ワークロードの定期的な実行(コホート)に適用されます。ワークロードを送信するときに指定するコホート名は、繰り返しワークロードの連続実行の 1 つとして識別されます。ワークロードのタイプを説明するコホート名の使用をおすすめします。または、繰り返されるワークロードの一部としてワークロードの実行を識別しやすくすることも推奨されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH-Query1 を指定します。

自動チューニングのシナリオ

次の自動チューニング シナリオを 1 つ以上選択して、Dataproc サーバーレス自動チューニングをワークロードに適用します。

  • MEMORY: Spark のメモリ割り当てを自動で調整して、潜在的なワークロードのメモリ不足エラーを予測して回避します。メモリ不足(OOM)エラーのために以前に失敗したワークロードを修正します。
  • SCALING: Spark 自動スケーリングの構成設定を自動調整します。
  • BHJ: SQL ブロードキャスト結合のパフォーマンスを最適化するために、Spark 構成設定を自動調整します。

料金

Dataproc サーバーレス自動調整は、プレビュー期間中は追加料金なしで提供されます。標準の Dataproc サーバーレスの料金が適用されます。

ご利用いただけるリージョン

Dataproc サーバーレス自動チューニングは、利用可能な Compute Engine リージョンで送信されたバッチで使用できます。

Dataproc サーバーレスの自動チューニングを使用する

Google Cloud コンソール、Google Cloud CLI、または Dataproc API を使用して、ワークロードで Dataproc サーバーレス自動調整を有効にできます。

コンソール

定期的なバッチ ワークロードを送信するたびに Dataproc サーバーレス自動チューニングを有効にするには、次の手順を行います。

  1. Google Cloud コンソールで、Dataproc バッチ ページに移動します。

    Dataproc バッチに移動

  2. バッチ ワークロードを作成するには、[作成] をクリックします。

  3. [コンテナ] セクションで、Spark ワークロードの次のフィールドに入力します。

    • コホート: コホート名。バッチを一連の反復的なワークロードの 1 つとして識別します。自動チューニングは、このコホート名で送信される 2 番目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH-Query1 を指定します。
    • 自動チューニングのシナリオ: 1 つ以上(たとえば、BHJMEMORYSCALING )の 自動チューニングのシナリオワークロードの最適化に使用できます。シナリオの選択は、バッチ コホートの送信ごとに変更できます。
  4. 必要に応じて [バッチ作成] ページの他のセクションに入力し、[送信] をクリックします。これらのフィールドの詳細については、バッチ ワークロードを送信するをご覧ください。

gcloud

定期的なバッチ ワークロードが送信されるたびに Dataproc サーバーレスの自動チューニングを有効にするには、次の gcloud CLI の gcloud dataproc batches submit コマンドをターミナル ウィンドウまたは Cloud Shell でローカルに実行します。

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    --autotuning-scenarios=SCENARIOS \
    other arguments ...

次のように置き換えます。

  • COMMAND: Spark ワークロード タイプ(SparkPySparkSpark-SqlSpark-R など)。
  • REGION: ワークロードが実行される リージョンを指定します。
  • COHORT: コホート名。バッチを一連の反復的なワークロードの 1 つとして識別します。自動チューニングは、このコホート名で送信される 2 番目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール済みワークロードのコホート名として TPCH Query 1 を指定します。
  • SCENARIOS: ワークロードの最適化に使用する 1 つ以上のカンマ区切りの自動チューニング シナリオ(例: --autotuning-scenarios=OOM,MEMORY,SCALING)。シナリオリストは、バッチ コホートを送信するたびに変更できます。

API

定期的なバッチ ワークロードが送信されるたびに Dataproc サーバーレスの自動チューニングを有効にするには、次のフィールドを含む batches.create リクエストを送信します。

  • RuntimeConfig.cohort: コホート名。一連の繰り返しワークロードの 1 つとしてバッチを識別します。自動チューニングは、このコホート名で送信された 2 回目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH-Query1 を指定します。
  • AutotuningConfig.scenarios: 1 つ以上(たとえば、BHJMEMORYSCALING )の 自動チューニングのシナリオワークロードの最適化に使用できます。シナリオリストは、バッチ コホートを送信するたびに変更できます。

例:

...
runtimeConfig:
  cohort: TPCH-Query1
  autotuningConfig:
    scenarios:
    - BHJ
    - MEMORY
    - SCALING
...

自動チューニングの変更を表示する

バッチ ワークロードに対する Dataproc サーバーレス自動チューニングの変更を表示するには、gcloud dataproc batches describe コマンドを実行します。

例: gcloud dataproc batches describe 出力は次のようになります。

...
runtimeInfo:
   propertiesInfo:
    # Properties set by autotuning.
    autotuningProperties
      spark.driver.memory:
        annotation: Driver OOM was detected
        value: 11520m
      spark.driver.memoryOverhead:
        annotation: Driver OOM was detected
        value: 4608m
    # Old overwritten properties.
    userProperties
...

実行中のワークロード、完了したワークロード、または失敗したワークロードに適用された最新の自動チューニングの変更は、Google Cloud コンソールの [バッチの詳細] ページの [Investigate] タブに適用されます。

自動調整調査パネル。