このドキュメントでは、Spark プロパティとその設定方法について説明します。Dataproc サーバーレスは、Spark プロパティを使用して、バッチ ワークロードに割り当てるコンピューティング リソース、メモリリソース、ディスク リソースを決定します。これらのプロパティ設定は、ワークロードの割り当ての使用量と費用に影響する可能性があります。詳細については、Dataproc Serverless の割り当てと Dataproc Serverless の料金をご覧ください。
Spark バッチ ワークロードのプロパティの設定
Google Cloud コンソール、gcloud CLI、または Dataproc API を使用して Dataproc サーバーレス Spark バッチ ワークロードを送信するときに、Spark プロパティを指定できます。
Console
Google Cloud コンソールで、Dataproc の [バッチの作成] ページに移動します。
[プロパティ] セクションで [プロパティを追加] をクリックします。
サポートされている Spark プロパティの
Key
(名前)とValue
を入力します。
gcloud
gcloud CLI バッチ送信の例:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
サポートされる Spark プロパティで、RuntimeConfig.properties をbatches.create リクエストの一部として設定します。
サポートされる Spark プロパティ
Dataproc Serverless for Spark では、ほとんどの Spark プロパティをサポートしていますが、YARN やシャッフル関連の Spark プロパティ(spark.master=yarn
や spark.shuffle.service.enabled
など)はサポートしていません。Spark アプリケーション コードで YARN またはシャッフルのプロパティが設定されている場合、アプリケーションは失敗します。
ランタイム環境のプロパティ
Dataproc Serverless for Spark では、ランタイム環境を構成するために、次のカスタム Spark プロパティがサポートされています。
プロパティ | 説明 |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
ドライバ プロセスに EnvironmentVariableName を追加します。複数の環境変数を指定できます。 |
リソース割り当てプロパティ
Dataproc Serverless for 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.executor.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 にする必要があります。 |
自動スケーリングのプロパティ
Dataproc サーバーレス自動スケーリングの構成に使用できる 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 |
このプロパティを有効にして、バッチ ワークロードの失敗またはキャンセル時に診断を実行します。診断が有効になっている場合、ワークロードの完了後に診断が完了するまで、バッチ ワークロードではコンピューティング リソースが引き続き使用されます。診断用 tarball の場所を指す URI が Batch.RuntimeInfo.diagnosticOutputUri API フィールドに表示されます。 |
dataproc.gcsConnector.version |
このプロパティを使用して、Cloud Storage コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります。 |
dataproc.sparkBqConnector.version |
このプロパティを使用して、Spark BigQuery コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります(BigQuery コネクタを Dataproc Serverless for Spark とともに使用するを参照)。 |
dataproc.profiling.enabled |
このプロパティを true に設定して、Dataproc Serverless ワークロードのプロファイリングを有効にします。 |
dataproc.profiling.name |
このプロパティを使用して、Profiler サービスでプロファイルを作成するときに使用する名前を設定します。 |