このドキュメントでは、Spark プロパティとその設定方法について説明します。Apache Spark 用サーバーレスは、Spark プロパティを使用して、バッチ ワークロードに割り当てるコンピューティング リソース、メモリリソース、ディスク リソースを決定します。これらのプロパティ設定は、ワークロードの割り当ての使用量と費用に影響する可能性があります。詳細については、Apache Spark 用サーバーレスの割り当てと Apache Spark 用サーバーレスの料金をご覧ください。
Spark バッチ ワークロードのプロパティの設定
Google Cloud コンソール、gcloud CLI、または Dataproc API を使用して Apache Spark 用サーバーレス Spark バッチ ワークロードを送信するときに、Spark プロパティを指定できます。
コンソール
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 プロパティ
Serverless for Apache Spark では、ほとんどの Spark プロパティをサポートしていますが、YARN やシャッフル関連の Spark プロパティ(spark.master=yarn や spark.shuffle.service.enabled など)はサポートしていません。Spark アプリケーション コードで YARN またはシャッフルのプロパティが設定されている場合、アプリケーションは失敗します。
ランタイム環境のプロパティ
Apache Spark 向け Serverless では、ランタイム環境を構成するために、次のカスタム Spark プロパティがサポートされています。
| プロパティ | 説明 | 
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME | 
    ドライバ プロセスに ENVIRONMENT_VARIABLE_NAME を追加します。複数の環境変数を指定できます。 | 
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME | 
    エグゼキュータ プロセスに ENVIRONMENT_VARIABLE_NAME を追加します。複数の環境変数を指定できます。 | 
Tier プロパティ
| プロパティ | 説明 | デフォルト | 
|---|---|---|
dataproc.tier | 
      
        バッチ ワークロードが実行される階層(standard または premium)。(Google Cloud Apache Spark 用 Serverless の階層をご覧ください)。インタラクティブ セッションは常にプレミアム dataproc.tier で実行されます。
  | 
      standard | 
    
エンジンとランタイムのプロパティ
| プロパティ | 説明 | デフォルト | 
|---|---|---|
spark.dataproc.engine | 
      
        バッチ ワークロードまたはインタラクティブ セッションの実行に使用するエンジン。lightningEngine(Lightning Engine を参照)または default エンジン。
  | 
      
        
  | 
    
spark.dataproc.lightningEngine.runtime | 
      
        バッチ ワークロードまたはインタラクティブ セッションで Lightning Engine が選択されている場合に使用するランタイム: default または native(ネイティブ クエリ実行)。 | 
      default | 
    
リソース割り当てプロパティ
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.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 にする必要があります。 | 
    
自動スケーリングのプロパティ
Apache Spark 用 Serverless 自動スケーリングの構成に使用できる 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 | 
    このプロパティを有効にして、バッチ ワークロードの失敗またはキャンセル時に診断を実行します。診断が有効になっている場合、ワークロードの完了後に診断が完了するまで、バッチ ワークロードではコンピューティング リソースが引き続き使用されます。診断 tar ファイルの場所を指す URI が、Batch.RuntimeInfo.diagnosticOutputUri API フィールドに一覧表示されます。 | 
dataproc.gcsConnector.version | 
    このプロパティを使用して、Cloud Storage コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります。 | 
dataproc.sparkBqConnector.version | 
    このプロパティを使用して、Spark BigQuery コネクタのバージョンにアップグレードします。このバージョンは、バッチ ワークロードのランタイム バージョンとともにインストールされるバージョンとは異なります(BigQuery コネクタを Apache Spark 用 Serverless とともに使用するを参照)。 | 
dataproc.profiling.enabled | 
    このプロパティを true に設定すると、Apache Spark 向け Serverless ワークロードのプロファイリングが有効になります。 | 
  
dataproc.profiling.name | 
    このプロパティを使用して、Profiler サービスでプロファイルを作成するときに使用する名前を設定します。 | 
spark.jars | 
    このプロパティを使用して、ドライバとエグゼキュータのクラスパスに含める jar のカンマ区切りリストを設定します | 
spark.archives | 
    このプロパティを使用して、各エグゼキュータの作業ディレクトリに抽出されるアーカイブのカンマ区切りのリストを設定します。.jar、.tar.gz、.tgz、.zip がサポートされています。サーバーレス インタラクティブ セッションの場合は、インタラクティブ セッション/テンプレートの作成時にこのプロパティを追加します。 |