このドキュメントでは、Spark プロパティとその設定方法について説明します。 Managed Service for Apache Spark は、Spark プロパティを使用して、バッチ ワークロードに割り当てるコンピューティング リソース、メモリリソース、ディスク リソースを決定します。 これらのプロパティ設定は、ワークロードの割り当ての使用量と費用に影響する可能性があります。詳細については、 Managed Service for Apache Spark の割り当てと Managed Service for Apache Spark の料金をご覧ください。
Spark バッチ ワークロードのプロパティの設定
コンソール、gcloud CLI、または Dataproc API を使用して Managed Service for Apache Spark バッチ ワークロードを 送信 するときに、Spark プロパティを指定できます。 Google Cloud
コンソール
コンソールで、Managed Service for Apache Spark バッチの作成 ページに移動します。 Google Cloud
[プロパティ] セクションで [プロパティを追加] をクリックします。
gcloud
gcloud CLI を使用したバッチ送信の例を次に示します。複数の プロパティは カンマで区切ります。
gcloud dataproc batches submit spark \ --properties=spark.checkpoint.compress=true,spark.driver.cores=8 \ --region=REGION \ other args ...
API
サポートされる Spark プロパティで、RuntimeConfig.properties をbatches.create リクエストの一部として設定します。
サポートされる Spark プロパティ
Managed Service for Apache Spark では、ほとんどの Spark プロパティをサポートしていますが、YARN やシャッフル関連の Spark プロパティ(spark.master=yarn や spark.shuffle.service.enabled など)はサポートしていません。Spark アプリケーション コードで YARN またはシャッフルのプロパティが設定されている場合、アプリケーションは失敗します。
ランタイム環境プロパティ
Managed Service for Apache Spark では、ランタイム環境を構成するために、次のカスタム Spark プロパティがサポートされています。
| プロパティ | 説明 |
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
ドライバ プロセスに ENVIRONMENT_VARIABLE_NAME を追加します。複数の環境変数を指定できます。 |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
エグゼキュータ プロセスに ENVIRONMENT_VARIABLE_NAME を追加します。複数の環境変数を指定できます。 |
階層プロパティ
| プロパティ | 説明 | デフォルト |
|---|---|---|
dataproc.tier |
バッチ ワークロードが実行される階層。standard または premium(Managed Service for Apache Spark の階層を参照)。インタラクティブ
セッションは常にプレミアム dataproc.tier で実行されます。
|
standard |
エンジンとランタイムのプロパティ
| プロパティ | 説明 | デフォルト |
|---|---|---|
spark.dataproc.engine |
バッチ ワークロードまたはインタラクティブ セッションの実行に使用するエンジン。lightningEngine
(Lightning Engine を参照)または default エンジン。
|
|
spark.dataproc.lightningEngine.runtime |
バッチ ワークロードまたはインタラクティブ セッションに Lightning Engine が選択されている場合に使用するランタイム: default または native (ネイティブ クエリ実行)。
|
default |
リソース割り当てプロパティ
Managed Service for Apache Spark では、リソース割り当てを構成するために、次の Spark プロパティがサポートされています。
| プロパティ | 説明 | デフォルト | 例 |
|---|---|---|---|
spark.driver.cores |
Spark ドライバに割り当てるコア(vCPU)の数。有効な値: 4、8、16。 |
4 |
|
spark.driver.memory |
Spark ドライバ プロセスに割り当てるメモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。 ドライバのコアごとのドライバの合計メモリ(ドライバメモリのオーバーヘッドを含む)。これは、スタンダード コンピューティング階層の場合は |
512m、2g |
|
spark.driver.memoryOverhead |
Spark ドライバ プロセスに割り当てる追加の JVM メモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。 これは、JVM オーバーヘッド、内部文字列、その他のネイティブ オーバーヘッドに関連するヒープ以外のメモリであり、PySpark ドライバ プロセスやコンテナで実行される他のドライバ以外のプロセスで使用されるメモリなど、他のドライバ・プロセスによって使用されるメモリを含みます。ドライバを実行するコンテナの最大メモリサイズは、 ドライバのコアごとのドライバの合計メモリ(ドライバメモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は |
10% のドライバ メモリです。ただし、PySpark バッチ ワークロードは除きます。これはデフォルトではドライバメモリの 40% になります。 | 512m、2g |
spark.dataproc.driver.compute.tier |
ドライバで使用するコンピューティング階層。 プレミアム コンピューティング階層では、コアごとのパフォーマンスは上がりますが、 課金レートは高くなります。 | 標準 | スタンダード、プレミアム |
spark.dataproc.driver.disk.size |
サイズ単位の接尾辞(「k」、「m」、「g」、「t」)で指定されたドライバに割り当てられるディスク容量。
250GiB 以上の値を指定してください。
ドライバでプレミアム ディスク階層が選択されている場合、有効なサイズは 375g、750g、1500g、3000g、6000g、9000g です。 プレミアム ディスク階層と 16 個のドライバコアを選択した場合、最小ディスクサイズは 750g です。 |
コア当たりの100GiB |
1024g、2t |
spark.dataproc.driver.disk.tier |
ドライバのローカル ストレージとシャッフル ストレージに使用するディスク階層。プレミアム ディスク階層では、IOPS とスループットのパフォーマンスは上がりますが、課金レートは高くなります。ドライバでプレミアム ディスク階層を選択した場合は、spark.dataproc.driver.compute.tier=premium を使用してプレミアム コンピューティング階層も選択する必要があります。また、spark.dataproc.driver.disk.size を使用してディスク容量を指定する必要があります。プレミアム ディスク階層が選択されている場合、ドライバはシステム ストレージ用に 50 GiB のディスク容量を割り当てます。これはユーザー アプリケーションで使用できません。 |
標準 | スタンダード、プレミアム |
spark.executor.cores |
各 Spark エグゼキュータに割り当てるコア(vCPU)の数。有効な値: 4、8、16。 |
4 |
|
spark.executor.memory |
各 Spark エグゼキュータ プロセスに割り当てるメモリ量。サイズ単位の接尾辞(「m」、「g」、「t」)を有するJVM メモリ文字列形式で指定されます。 エグゼキュータのコアごとのエグゼキュータのメモリの合計(エグゼキュータ・メモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は |
512m、2g |
|
spark.executor.memoryOverhead |
Spark エグゼキュータ プロセスに割り当てる追加の JVM メモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。 これは、JVM オーバーヘッド、内部文字列、その他のネイティブ オーバーヘッドに使用されるヒープ以外のメモリであり、PySpark エグゼキュータのメモリと、コンテナ内で実行される他のエグゼキュータ以外のプロセスで使用されるメモリが含まれます。エグゼキュータを実行するコンテナの最大メモリサイズは、 エグゼキュータのコアごとのエグゼキュータのメモリの合計(エグゼキュータ・メモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は |
10% のエグゼキュータ メモリです。ただし、PySpark バッチ ワークロードは除きます。これはデフォルトではエグゼキュータ メモリの 40% になります。 | 512m、2g |
spark.dataproc.executor.compute.tier |
エグゼキュータで使用するコンピューティング階層。プレミアム コンピューティング階層では、コアごとのパフォーマンスは上がりますが、課金レートは高くなります。 | 標準 | スタンダード、プレミアム |
spark.dataproc.executor.disk.size |
サイズ単位の接尾辞(「k」、「m」、「g」、「t」)で指定された各エグゼキュータに割り当てられるディスク容量。
エグゼキュータのディスク容量は、シャッフル データや依存関係のステージングに使用される可能性があります。250GiB 以上の値を指定してください。
エグゼキュータでプレミアム ディスク階層が選択されている場合、有効なサイズは 375g、750g、1500g、3000g、6000g、9000g です。 プレミアム ディスク階層と 16 個のエグゼキュータ コアを選択した場合、最小ディスクサイズは 750g です。 |
コア当たりの100GiB |
1024g、2t |
spark.dataproc.executor.disk.tier |
エグゼキュータのローカル ストレージとシャッフル ストレージに使用するディスク階層。プレミアム ディスク階層では、IOPS とスループットのパフォーマンスは上がりますが、課金レートは高くなります。エグゼキュータでプレミアム ディスク階層を選択した場合は、spark.dataproc.executor.compute.tier=premium を使用してプレミアム コンピューティング階層も選択する必要があります。また、spark.dataproc.executor.disk.size を使用してディスク容量を指定する必要があります。
プレミアム ディスク階層が選択されている場合、各エグゼキュータにはシステム ストレージ用に 50 GiB のディスク容量が割り当てられます。これはユーザー アプリケーションで使用できません。 |
標準 | スタンダード、プレミアム |
spark.executor.instances |
割り当てるエグゼキュータの初期数。バッチ ワークロードが開始されると、自動スケーリングはアクティブなエグゼキュータの数を変更する可能性があります。
少なくとも 2~2000 にする必要があります。 |
プロビジョニング プロパティ
Managed Service for Apache Spark では、ワークロードのプロビジョニングを構成するために、次の Spark プロパティがサポートされています。
| プロパティ | 説明 | デフォルト |
|---|---|---|
spark.dataproc.[driver|executor].provisioning.mode |
プロビジョニング モデルを指定します。Dynamic Workload Scheduler(DWS)Flex Start(ランタイム バージョン `3.0`以降の GPU のデフォルト)には queue を使用します。DWS を無効にしてオンデマンド プロビジョニングを使用するには、default を使用します。 |
queue(3.0 以降の GPU の場合) |
spark.dataproc.[driver|executor].provisioning.allocationTimeout |
ノードプールがキューで容量を待機する最大時間。
デフォルトは 1 時間 (3600s)、
最大は 2 時間 (7200s)です。
注: 値は「s」で終わる必要があります。 |
3600s |
自動スケーリングのプロパティ
Managed Service for Apache Spark 自動スケーリングの構成に使用できる Spark プロパティのリストについては、Spark の動的割り当てのプロパティ をご覧ください。
ロギング プロパティ
| プロパティ | 説明 | デフォルト | 例 |
|---|---|---|---|
spark.log.level |
設定すると、Spark の起動時に SparkContext.setLogLevel() の呼び出しの効果で、ユーザー定義のログ設定がオーバーライドされます。有効な
ログレベルは、ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、およびWARNです。 |
INFO、DEBUG |
|
spark.executor.syncLogLevel.enabled |
true に設定すると、SparkContext.setLogLevel() メソッドを通じて適用されるログレベルがすべてのエグゼキュータに伝播されます。 |
false |
true、false |
spark.log.level.PackageName |
設定すると、Spark の起動時に SparkContext.setLogLevel(PackageName, level) の呼び出しの効果で、ユーザー定義のログ設定がオーバーライドされます。有効なログレベルは、ALL、DEBUG、
ERROR、FATAL、INFO、OFF、
TRACE、WARN です。 |
spark.log.level.org.apache.spark=error |
スケジューリング プロパティ
| プロパティ | 説明 | デフォルト | 例 |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
スケジューリング時にシャッフル マップのスキュー エグゼキュータを除外します。これにより、シャッフル書き込みのスキューによって発生するシャッフル フェッチの長い待機時間を短縮できます。 | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
スキューとして扱うエグゼキュータで完了したシャッフル マップタスクの最小数 。 | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
スキューとして扱うエグゼキュータの最大数。スキュー エグゼキュータ は、現在のスケジューリング ラウンドから除外されます。 | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
スキューとして扱うエグゼキュータの合計数の最大比率。スキュー エグゼキュータ はスケジューリングから除外されます。 | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
スキューとして扱うエグゼキュータで完了したシャッフル マップタスクの平均数の倍数。 | 1.5 | 2.0 |
その他のプロパティ
| プロパティ | 説明 |
|---|---|
dataproc.diagnostics.enabled |
**`2.3` 以前のランタイムでのみサポートされています** このプロパティを有効にして、バッチ ワークロードの失敗または キャンセル時に診断を実行します。診断が有効になっている場合、ワークロードの完了後に診断が完了するまで、バッチ ワークロードでは コンピューティング リソース が引き続き使用されます。 診断 tar ファイルの場所を指す URI は、 Batch.RuntimeInfo.diagnosticOutputUri API フィールドに一覧表示されます。 |
dataproc.gcsConnector.version |
**2.3 以前のランタイムでのみサポートされています** このプロパティを使用して、バッチ ワークロードの ランタイム バージョンとともにインストールされるバージョンとは異なる Cloud Storage コネクタのバージョン にアップグレードします。 |
dataproc.sparkBqConnector.version |
**`2.3` 以前のランタイムでのみサポートされています** このプロパティを使用して、バッチ ワークロードの ランタイム バージョンとともにインストールされるバージョンとは異なる Spark BigQuery コネクタのバージョン にアップグレードします( BigQuery コネクタを Managed Service for Apache Spark とともに使用するを参照)。 |
dataproc.profiling.enabled |
**`2.3` 以前のランタイムでのみサポートされています** Managed Service for Apache Spark ワークロードのプロファイリングを有効にするには、このプロパティを true に設定します。 |
dataproc.profiling.name |
**`2.3` 以前のランタイムでのみサポートされています** このプロパティを使用して、 Profiler サービスでプロファイルを作成するときに使用する名前を設定します。 |
spark.jars |
このプロパティを使用して、ドライバとエグゼキュータのクラスパスに含める jar のカンマ区切りリストを設定します。 |
spark.archives |
このプロパティを使用して、各エグゼキュータの作業ディレクトリに解凍するアーカイブのカンマ区切りのリストを設定します。.jar、.tar.gz、.tgz、.zip がサポートされています。サーバーレス インタラクティブ セッションの場合は、インタラクティブ セッションまたはテンプレートの作成時にこのプロパティを追加します。 |
dataproc.artifacts.remove |
このプロパティを使用して、Managed Service for Apache Spark ランタイムにインストールされているデフォルトのアーティファクトを削除します。サポートされているアーティファクトは、conscrypt、delta-lake、iceberg、rapids、spark-bigquery-connector です。 |