Spark プロパティ

このドキュメントでは、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 バッチ ワークロードを 送信 するときに、Spark プロパティを指定できます。 Google Cloud

コンソール

  1. コンソールで、Managed Service for Apache Spark バッチの作成 ページに移動します。 Google Cloud

    Managed Service for Apache Spark バッチの作成に移動

  2. [プロパティ] セクションで [プロパティを追加] をクリックします。

  3. サポートされている Spark プロパティの Key(名前)と Value を入力します。

gcloud

gcloud CLI バッチ送信の例を次に示します。複数の プロパティは カンマで区切ります。

gcloud dataproc batches submit spark \
    --properties=spark.checkpoint.compress=true,spark.driver.cores=8  \
    --region=REGION \
    other args ...

API

サポートされる Spark プロパティで、RuntimeConfig.propertiesbatches.create リクエストの一部として設定します。

サポートされる Spark プロパティ

Managed Service for Apache Spark では、ほとんどの Spark プロパティをサポートしていますが、YARN やシャッフル関連の Spark プロパティ(spark.master=yarnspark.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 または premiumManaged Service for Apache Spark の階層を参照)。インタラクティブ セッションは常にプレミアム dataproc.tier で実行されます。
  • このバッチ階層プロパティを standard に設定すると、Managed Service for Apache Spark ランタイムとリソース階層のプロパティが standard 階層に設定されます(リソース割り当てプロパティを参照)。
  • このバッチ階層プロパティを premium に設定すると、 spark.dataproc.enginelightningEngine に設定され、 spark.dataproc.driver.compute.tierspark.dataproc.executor.compute.tierpremium に設定されます。 自動的に設定されたほとんどのバッチ階層設定はオーバーライドできますが、自動的に設定されたコンピューティング 階層設定は、3.0より前のランタイムを使用するバッチではオーバーライドできません(リソース割り当てプロパティを参照)。
standard

エンジンとランタイムのプロパティ

プロパティ 説明 デフォルト
spark.dataproc.engine バッチ ワークロードまたはインタラクティブ セッションの実行に使用するエンジン。lightningEngineLightning Engine を参照)または default エンジン。
  • バッチ ワークロード: ワークロードに標準の dataproc.tier プロパティを選択すると、このプロパティは自動的に default に設定され、オーバーライドできません。ワークロードに premium dataproc.tier を選択すると、このプロパティは自動的に lightningEngine に設定されますが、必要に応じて default に変更できます。
  • インタラクティブ セッション: この設定は自動的に default に設定されますが、この設定を lightningEngine に変更できます。インタラクティブ セッションは常に premium 階層で実行されます。
  • バッチ(標準階層): default
  • バッチ(プレミアム階層): lightningEngine
  • セッション: default
spark.dataproc.lightningEngine.runtime バッチ ワークロードまたはインタラクティブ セッションに Lightning Engine が選択されている場合に使用するランタイム。default または nativeネイティブ クエリ実行)。 default

リソース割り当てプロパティ

Managed Service for Apache Spark では、リソース割り当てを構成するために、次の Spark プロパティがサポートされています。

プロパティ 説明 デフォルト
spark.driver.cores Spark ドライバに割り当てるコア(vCPU)の数。有効な値: 4816 4
spark.driver.memory

Spark ドライバ プロセスに割り当てるメモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。

ドライバのコアごとのドライバの合計メモリ(ドライバメモリのオーバーヘッドを含む)。これは、スタンダード コンピューティング階層の場合は 1024m7424m にする必要があります(プレミアム コンピューティング階層の場合は 24576m)。たとえば、spark.driver.cores = 4 の場合は 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m です。

512m2g
spark.driver.memoryOverhead

Spark ドライバ プロセスに割り当てる追加の JVM メモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。

これは、JVM オーバーヘッド、内部文字列、その他のネイティブ オーバーヘッドに関連するヒープ以外のメモリであり、PySpark ドライバ プロセスやコンテナで実行される他のドライバ以外のプロセスで使用されるメモリなど、他のドライバ・プロセスによって使用されるメモリを含みます。ドライバを実行するコンテナの最大メモリサイズは、spark.driver.memoryOverheadspark.driver.memory の合計によって決まります。

ドライバのコアごとのドライバの合計メモリ(ドライバメモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は 1024m7424m にする必要があります(プレミアム コンピューティング階層の場合は 24576m)。たとえば、spark.driver.cores = 4 の場合は 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m です。

10% のドライバ メモリです。ただし、PySpark バッチ ワークロードは除きます。これはデフォルトではドライバメモリの 40% になります。 512m2g
spark.dataproc.driver.compute.tier ドライバで使用するコンピューティング階層。 プレミアム コンピューティング階層では、コアごとのパフォーマンスは上がりますが、 課金レートは高くなります。 標準 スタンダード、プレミアム
spark.dataproc.driver.disk.size サイズ単位の接尾辞(「k」、「m」、「g」、「t」)で指定されたドライバに割り当てられるディスク容量。 250GiB 以上の値を指定してください。 ドライバでプレミアム ディスク階層が選択されている場合、有効なサイズは 375g、750g、1500g、3000g、6000g、9000g です。 プレミアム ディスク階層と 16 個のドライバコアを選択した場合、最小ディスクサイズは 750g です。 コア当たりの100GiB 1024g2t
spark.dataproc.driver.disk.tier ドライバのローカル ストレージとシャッフル ストレージに使用するディスク階層。プレミアム ディスク階層では、IOPS とスループットのパフォーマンスは上がりますが、課金レートは高くなります。ドライバでプレミアム ディスク階層を選択した場合は、spark.dataproc.driver.compute.tier=premium を使用してプレミアム コンピューティング階層も選択する必要があります。また、spark.dataproc.executor.disk.size を使用してディスク容量を指定する必要があります。

プレミアム ディスク階層が選択されている場合、ドライバはシステム ストレージ用に 50 GiB のディスク容量を割り当てます。これはユーザー アプリケーションで使用できません。

標準 スタンダード、プレミアム
spark.executor.cores 各 Spark エグゼキュータに割り当てるコア(vCPU)の数。有効な値: 4816 4
spark.executor.memory

各 Spark エグゼキュータ プロセスに割り当てるメモリ量。サイズ単位の接尾辞(「m」、「g」、「t」)を有するJVM メモリ文字列形式で指定されます。

エグゼキュータのコアごとのエグゼキュータのメモリの合計(エグゼキュータ・メモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は 1024m7424m にする必要があります(プレミアム コンピューティング階層の場合は 24576m)。たとえば、spark.executor.cores = 4 の場合は 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m です。

512m2g
spark.executor.memoryOverhead

Spark エグゼキュータ プロセスに割り当てる追加の JVM メモリの量。サイズ単位の接尾辞(「m」、「g」または「t」)を付けた JVM メモリ文字列形式で指定されます。

これは、JVM オーバーヘッド、内部文字列、その他のネイティブ オーバーヘッドに使用されるヒープ以外のメモリであり、PySpark エグゼキュータのメモリと、コンテナ内で実行される他のエグゼキュータ以外のプロセスで使用されるメモリが含まれます。エグゼキュータを実行するコンテナの最大メモリサイズは、spark.executor.memoryOverheadspark.executor.memory の合計によって決まります。

エグゼキュータのコアごとのエグゼキュータのメモリの合計(エグゼキュータ・メモリのオーバーヘッドを含む)は、スタンダード コンピューティング階層の場合は 1024m7424m にする必要があります(プレミアム コンピューティング階層の場合は 24576m)。たとえば、spark.executor.cores = 4 の場合は 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m です。

10% のエグゼキュータ メモリです。ただし、PySpark バッチ ワークロードは除きます。これはデフォルトではエグゼキュータ メモリの 40% になります。 512m2g
spark.dataproc.executor.compute.tier エグゼキュータで使用するコンピューティング階層。プレミアム コンピューティング階層では、コアごとのパフォーマンスは上がりますが、課金レートは高くなります。 標準 スタンダード、プレミアム
spark.dataproc.executor.disk.size サイズ単位の接尾辞(「k」、「m」、「g」、「t」)で指定された各エグゼキュータに割り当てられるディスク容量。 エグゼキュータのディスク容量は、シャッフル データや依存関係のステージングに使用される可能性があります。250GiB 以上の値を指定してください。 エグゼキュータでプレミアム ディスク階層が選択されている場合、有効なサイズは 375g、750g、1500g、3000g、6000g、9000g です。 プレミアム ディスク階層と 16 個のエグゼキュータ コアを選択した場合、最小ディスクサイズは 750g です。 コア当たりの100GiB 1024g2t
spark.dataproc.executor.disk.tier エグゼキュータのローカル ストレージとシャッフル ストレージに使用するディスク階層。プレミアム ディスク階層では、IOPS とスループットのパフォーマンスは上がりますが、課金レートは高くなります。エグゼキュータでプレミアム ディスク階層を選択した場合は、spark.dataproc.executor.compute.tier=premium を使用してプレミアム コンピューティング階層も選択する必要があります。また、spark.dataproc.executor.disk.size を使用してディスク容量を指定する必要があります。

プレミアム ディスク階層が選択されている場合、各エグゼキュータにはシステム ストレージ用に 50 GiB のディスク容量が割り当てられます。これはユーザー アプリケーションで使用できません。

標準 スタンダード、プレミアム
spark.executor.instances 割り当てるエグゼキュータの初期数。バッチ ワークロードが開始されると、自動スケーリングはアクティブなエグゼキュータの数を変更する可能性があります。22000 にする必要があります。

自動スケーリングのプロパティ

Managed Service for Apache Spark 自動スケーリングの構成に使用できる Spark プロパティのリストについては、Spark の動的割り当てのプロパティ をご覧ください。

ロギング プロパティ

プロパティ 説明 デフォルト
spark.log.level 設定すると、Spark の起動時に SparkContext.setLogLevel() の呼び出しの効果で、ユーザー定義のログ設定がオーバーライドされます。有効な ログレベルは、ALLDEBUGERRORFATALINFOOFFTRACE、およびWARNです。 INFODEBUG
spark.executor.syncLogLevel.enabled true に設定すると、SparkContext.setLogLevel() メソッドを通じて適用されるログレベルがすべてのエグゼキュータに伝播されます。 false truefalse
spark.log.level.PackageName 設定すると、Spark の起動時に SparkContext.setLogLevel(PackageName, level) の呼び出しの効果で、ユーザー定義のログ設定がオーバーライドされます。有効なログレベルは、ALLDEBUGERRORFATALINFOOFFTRACEWARN です。 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 このプロパティを有効にして、バッチ ワークロードの失敗またはキャンセル時に診断を実行します。診断が有効になっている場合、ワークロードの完了後に診断が完了するまで、バッチ ワークロードでは コンピューティング リソース が引き続き使用されます。 診断 tar ファイルの場所を指す URI は、 Batch.RuntimeInfo.diagnosticOutputUri API フィールドに一覧表示されます。
dataproc.gcsConnector.version このプロパティを使用して、Cloud Storage コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります。
dataproc.sparkBqConnector.version このプロパティを使用して、Spark BigQuery コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります(BigQuery コネクタを Managed Service for Apache Spark とともに使用するを参照)。
dataproc.profiling.enabled このプロパティを true に設定すると、 Managed Service for Apache Spark ワークロードのプロファイリングが有効になります。
dataproc.profiling.name このプロパティを使用して、 Profiler サービスでプロファイルを作成するために使用する名前を設定します。
spark.jars このプロパティを使用して、ドライバとエグゼキュータのクラスパスに含める jar のカンマ区切りリストを設定します。
spark.archives このプロパティを使用して、各エグゼキュータの作業ディレクトリに解凍されるアーカイブのカンマ区切りのリストを設定します。.jar、.tar.gz、.tgz、.zip がサポートされています。サーバーレス インタラクティブ セッションの場合は、インタラクティブ セッションまたはテンプレートの作成時にこのプロパティを追加します。
dataproc.artifacts.remove このプロパティを使用して、Managed Service for Apache Spark ランタイムにインストールされているデフォルトのアーティファクトを削除します。サポートされているアーティファクトは、spark-bigquery-connectorconscrypticebergdelta-lake です。