Lindorm Distributed Processing System (LDPS) は、Kubernetes で管理される弾性リソースプール上で Spark ジョブを実行します。このページでは、LDPS の Spark ジョブで構成可能なすべてのパラメーターを一覧表示し、各送信方法でのパラメーターの渡し方について説明します。
Spark パラメーター
制限付きパラメーター
以下のパラメーターはシステムによって設定されており、カスタマイズすることはできません。
| パラメーター | 説明 |
|---|---|
spark.master |
クラスター管理システムのエンドポイント。 |
spark.submit.deployMode |
Spark ドライバーのデプロイメントモード。 |
リソースパラメーター
LDPS は、従量課金制の弾性リソースプール上で実行されます。デフォルトでは、ジョブがリクエストできるリソースに上限はありません。上限を設定するには、「LDPS の構成を変更する」をご参照ください。
リソースパラメーターは、LDPS に送信されるすべての JDBC、JAR、および Python ジョブに適用されます。これらは仕様パラメーターと容量パラメーターに分かれています。
仕様パラメーター
基本仕様パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.driver.memory |
ドライバーのヒープメモリ。単位:メビバイト。 | 8192m |
spark.driver.memoryOverhead |
ドライバーのオフヒープメモリ。単位:メビバイト。 | 8192m |
spark.kubernetes.driver.disk.size |
ドライバーのローカルディスクサイズ。単位:GB。 | 50 |
spark.executor.cores |
エグゼキュータあたりの CPU コア数。 | 4 |
spark.executor.memory |
エグゼキュータあたりのヒープメモリ。単位:メビバイト。 | 8192m |
spark.executor.memoryOverhead |
エグゼキュータあたりのオフヒープメモリ。単位:メビバイト。 | 8192m |
spark.kubernetes.executor.disk.size |
エグゼキュータあたりのローカルディスクサイズ。単位:GB。 | 50 |
高度な仕様パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.{driver/executor}.resourceTag |
事前定義されたリソース仕様セット。設定すると、LDPS は対応する CPU、メモリ、ディスクの値を自動的に適用します。有効な値:xlarge、2xlarge、4xlarge、8xlarge、16xlarge。 |
None |
spark.kubernetes.{driver/executor}.ecsModelPreference |
優先するコンピュートノードモデルを優先順位でリストします。LDPS は各モデルを順番に試行し、すべてが利用できない場合は、リソース仕様に一致する利用可能なモデルを選択します。最大 4 つのモデルをカンマで区切って指定します。例:hfg6,g6。 |
None |
spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs |
Elastic Container Instance (ECI) の GPU 仕様。サポートされている GPU インスタンスタイプについては、「Pod を作成するための ECS インスタンスタイプの指定をご参照ください。 | ecs.gn7i-c8g1.2xlarge |
spark.{driver/executor}.resource.gpu.vendor |
GPU ベンダー。eci-use-specs で設定された GPU 仕様と一致させる必要があります。 |
nvidia.com |
spark.{driver/executor}.resource.gpu.amount |
GPU の数。1 に設定します。 |
1 |
spark.{driver/executor}.resource.gpu.discoveryScript |
ドライバーまたはエグゼキュータの起動時に GPU リソースを識別してバインドするために使用される GPU 検出スクリプトへのパス。/opt/spark/examples/src/main/scripts/getGpusResources.sh に設定します。 |
/opt/spark/examples/src/main/scripts/getGpusResources.sh |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs |
ローカルディスク容量が拡張されたエグゼキュータインスタンス仕様。サポートされている値については、以下をご参照ください。 | None |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs パラメーターは、以下のエグゼキュータ仕様をサポートしています:
| 値 | CPU コア | メモリ |
|---|---|---|
ecs.d1ne.2xlarge |
8 | 32 GB |
ecs.d1ne.4xlarge |
16 | 64 GB |
ecs.d1ne.6xlarge |
24 | 96 GB |
ecs.d1ne.8xlarge |
32 | 128 GB |
ecs.d1ne.14xlarge |
56 | 224 GB |
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs を使用する場合は、以下の 2 つのパラメーターも設定してください:
-
spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.mount.path=/var -
spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.options.medium=LocalRaid0指定したエグゼキュータインスタンスタイプが利用できない場合は、Lindorm のテクニカルサポート (DingTalk ID: s0s3eg3) にご連絡ください。
resourceTag 仕様マッピング
| resourceTag の値 | spark.{driver/executor}.cores |
spark.{driver/executor}.memory |
spark.{driver/executor}.memoryOverhead |
spark.kubernetes.{driver/executor}.disk.size |
|---|---|---|---|---|
xlarge |
4 | 8192m | 8192m | 50 GB |
2xlarge |
8 | 16384m | 16384m | 100 GB |
4xlarge |
16 | 32768m | 32768m | 200 GB |
8xlarge |
32 | 65536m | 65536m | 400 GB |
16xlarge |
64 | 131072m | 131072m | 400 GB |
容量パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.executor.instances |
ジョブに割り当てられるエグゼキュータの数。 | 2 |
spark.dynamicAllocation.enabled |
動的リソース割り当てを有効にします。有効にすると、LDPS はリアルタイムのジョブワークロードに基づいてエグゼキュータを自動的にリクエストおよび解放します。有効な値:true、false。 |
true |
spark.dynamicAllocation.minExecutors |
動的リソース割り当てが有効な場合のエグゼキュータの最小数。 | 0 |
spark.dynamicAllocation.maxExecutors |
動的リソース割り当てが有効な場合のエグゼキュータの最大数。この値は同時タスクの数と等しくなります。 | Infinity |
spark.dynamicAllocation.executorIdleTimeout |
アイドル状態のエグゼキュータが解放されるまでの保持時間。単位:秒。 | 600s |
実行パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.speculation |
推測実行を有効にします。有効にすると、ドライバーは同じステージの他のタスクよりも著しく遅く実行されているタスク (ロングテール) を再送信し、ジョブの遅延を回避します。有効な値:true、false。 |
true |
spark.task.maxFailures |
ジョブが失敗するまでに許容されるタスクの最大失敗回数。 | 4 |
spark.dfsLog.executor.enabled |
エグゼキュータのログを LindormDFS に保存します。大規模なジョブの場合は、ログストリームによる DFS 負荷を軽減するために false に設定します。有効な値:true、false。 |
true |
spark.jars |
ジョブに必要な JAR パッケージへのパス。OSS または Hadoop 分散ファイルシステム (HDFS) のパスを受け入れます。JDBC を使用する場合は、HDFS パスのみに設定してください。OSS パスを使用する場合は、以下の OSS パラメーターも構成してください。 | None |
spark.hadoop.fs.oss.endpoint |
OSS エンドポイント。リージョンごとのエンドポイントの値については、「リージョンとエンドポイント」をご参照ください。 | None |
spark.hadoop.fs.oss.accessKeyId |
ご利用の Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。「AccessKey ペアの取得」をご参照ください。 | None |
spark.hadoop.fs.oss.accessKeySecret |
ご利用の Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。「AccessKey ペアの取得」をご参照ください。 | None |
spark.hadoop.fs.oss.impl |
OSS のファイルシステム実装クラス。org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem に設定します。 |
None |
spark.default.parallelism |
データソースの読み取りやシャッフルステージを含む、非 SQL タスクのデフォルトの並列度。 | None |
spark.sql.shuffle.partitions |
SQL タスクのシャッフルパーティション数。 | 200 |
モニタリングパラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.monitor.cmd |
定期的に実行するモニタリングコマンド。複数のコマンドはセミコロン (;) で区切ります。結果はジョブログに書き込まれます。説明
このパラメーターは、Beeline または JDBC 経由でジョブを送信する際には構成できません。 |
None |
spark.monitor.interval |
モニタリングコマンドの実行間隔。単位:秒。 | 60 |
spark.monitor.timeout |
各モニタリングコマンドのタイムアウト。コマンドがこの制限を超えた場合、スキップされて次のコマンドが実行されます。単位:秒。 | 2 |
モニタリングコマンドの例:
# 単一コマンド
"spark.monitor.cmd": "top -b -n 1"
# 複数コマンド
"spark.monitor.cmd": "top -b -n 1; vmstat; free -m; iostat -d -x -c -k; df -h; sar -n DEV 1 1; netstat"
カテゴリ別の一般的なモニタリングコマンド:
| カテゴリ | コマンド |
|---|---|
| システムステータス | top -b -n 1、vmstat |
| メモリ | free -m |
| ディスク I/O | iostat -d -x -c -k |
| ディスク使用量 | df -h |
| ネットワーク | sar -n DEV 1 1、netstat |
ログパラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
spark.log.level |
ジョブのログ出力レベル。 | INFO |
spark.log.level の有効な値 (詳細度の高い順):
| レベル | 説明 |
|---|---|
ALL |
最も詳細なデバッグ情報を含む、すべてのログ出力。 |
TRACE |
DEBUG よりも詳細。詳細な実行ステップを記録します。 |
DEBUG |
詳細なランタイムステータスを含むデバッグレベルのログ。 |
INFO |
通常の実行イベントに関する一般的な情報ログ。 |
WARN |
実行を停止させない潜在的な問題に関する警告。 |
ERROR |
実行中に発生したエラー。 |
FATAL |
プログラムの継続を妨げる致命的なエラー。 |
OFF |
すべてのログ出力を無効にします。 |
オープンソース Spark パラメーター
オープンソースの Spark から継承されたパラメーターについては、「Spark configuration」をご参照ください。
送信方法別のパラメーター構成
LDPS にジョブを送信する際、使用する方法によってパラメーターの渡し方が決まります。
Beeline
Beeline コマンドラインツールが格納されている Spark パッケージディレクトリ内の conf/beeline.conf を編集します。
# LDPS エンドポイント
# フォーマット:jdbc:hive2://<host>:<port>/;?token=<token>
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****
# 接続認証情報 (デフォルト: root/root)
user=root
password=root
# この接続に専用の Spark セッションを使用するには false に設定します
shareResource=false
# Spark パラメーター
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3
Beeline の完全なセットアップについては、「クイックスタート」をご参照ください。
JDBC
トークンの後に、Spark パラメーターをキーと値のペアとして JDBC 接続文字列に追加します。
jdbc:hive2://<host>:<port>/;?token=<token>;spark.executor.memory=8g;spark.sql.shuffle.partitions=2
JDBC URL の完全なフォーマットについては、「アプリケーション開発での JDBC の使用」をご参照ください。
spark.jars は、JDBC 経由でジョブを送信する場合、OSS パスに設定することはできません。代わりに HDFS パスを使用してください。
JAR ジョブ
Java ジョブを送信する際に、ジョブテンプレートでパラメーターを構成します:
-
Lindorm コンソール:ジョブコンテンツテンプレートで構成します。「Lindorm コンソールでのジョブ管理」をご参照ください。
-
Data Management Service (DMS):ジョブノードページの [ジョブ構成] セクションで構成します。「DMS を使用したジョブ管理」をご参照ください。
Python ジョブ
Python ジョブを送信する際に、ジョブテンプレートでパラメーターを構成します:
-
Lindorm コンソール:ジョブコンテンツテンプレートで構成します。「Lindorm コンソールでのジョブ管理」をご参照ください。
-
Data Management Service (DMS):ジョブノードページの [ジョブ構成] セクションで構成します。「DMS を使用したジョブ管理」をご参照ください。