すべてのプロダクト
Search
ドキュメントセンター

:ジョブのパラメーターを設定する

最終更新日:Apr 03, 2025

このトピックでは、Lindorm Distributed Processing System(LDPS)の Spark ジョブのパラメーターを設定する方法について説明します。

Spark ジョブのパラメーターを設定する

LDPS では、リソース、実行、監視に関連するパラメーターを含む、Spark ジョブの共通パラメーターを設定できます。

表 1. Kyuubi パラメーター

制限付きパラメーター

spark.master パラメーターと spark.submit.deployMode パラメーターはシステム パラメーターであるため、カスタマイズできません。

パラメーター

説明

spark.master

クラスター管理システムのエンドポイントです。

spark.submit.deployMode

Spark ドライバーがデプロイされるモードです。

リソースパラメーター

LDPS は、エラスティックリソースプールに基づいてサービスを提供します。デフォルトでは、設定できるリソースの最大数に制限はありません。これらのリソースは従量課金制で課金されます。設定できるリソースの最大数を変更する方法の詳細については、「LDPS の設定を変更する」をご参照ください。

JDBC、JAR、Python ジョブなど、LDPS に送信する各ジョブのリソースパラメーターを設定できます。リソースパラメーターには、仕様パラメーターと容量パラメーターが含まれます。

仕様パラメーター

基本仕様パラメーター

パラメーター

説明

デフォルト値

spark.driver.memory

ドライバーのヒープメモリのサイズです。単位:MB。

8192M

spark.driver.memoryOverhead

ドライバーのオフヒープメモリのサイズです。単位:MB。

8192M

spark.kubernetes.driver.disk.size

ドライバーのローカルディスクのサイズです。単位:GB。

50

spark.executor.cores

単一のエグゼキューターノードの CPU コア数です。

4

spark.executor.memory

単一のエグゼキューターのヒープメモリのサイズです。単位:MB。

8192M

spark.executor.memoryOverhead

単一のエグゼキューターのオフヒープメモリのサイズです。単位:MB。

8192M

spark.kubernetes.executor.disk.size

単一のエグゼキューターのローカルディスクのサイズです。単位:GB。

50

高度な仕様パラメーター

パラメーター

説明

デフォルト値

spark.{driver/executor}.resourceTag

リソース仕様セットです。有効な値:xlarge、2xlarge、4xlarge、8xlarge、16xlarge。指定された仕様セットで定義されたリソースは、ジョブに対して自動的に設定されます。

  • xlarge

    spark.{driver/executor}.cores=4

    spark.{driver/executor}.memory=8192m

    spark.{driver/executor}.memoryOverhead=8192m

    spark.kubernetes.{driver/executor}.disk.size=50

  • 2xlarge

    spark.{driver/executor}.cores=8

    spark.{driver/executor}.memory=16384m

    spark.{driver/executor}.memoryOverhead=16384m

    spark.kubernetes.{driver/executor}.disk.size=100

  • 4xlarge

    spark.{driver/executor}.cores=16

    spark.{driver/executor}.memory=32768m

    spark.{driver/executor}.memoryOverhead=32768m

    spark.kubernetes.{driver/executor}.disk.size=200

  • 8xlarge

    spark.{driver/executor}.cores=32

    spark.{driver/executor}.memory=65536m

    spark.{driver/executor}.memoryOverhead=65536m

    spark.kubernetes.{driver/executor}.disk.size=400

  • 16xlarge

    spark.{driver/executor}.cores=64

    spark.{driver/executor}.memory=131072m

    spark.{driver/executor}.memoryOverhead=131072m

    spark.kubernetes.{driver/executor}.disk.size=400

なし

spark.kubernetes.{driver/executor}.ecsModelPreference

計算ノードのモデルです。このパラメーターは、spark.{driver/executor}.resourceTag パラメーターとともに設定して、異なるモデルを順番に設定できます。最大 4 つのモデルを設定できます。例:spark.kubernetes.driver.ecsModelPreference=hfg6,g6

LDPS は、モデルが指定された順序でモデルに適用されます。指定されたすべてのモデルの在庫がない場合、LDPS は指定されたリソース仕様に基づいて、使用可能なモデルをランダムに適用します。

なし

spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs

GPU の仕様とモデルです。詳細については、「Podを作成するためのECSインスタンスタイプの指定」をご参照ください。

ecs.gn7i-c8g1.2xlarge

spark.{driver/executor}.resource.gpu.vendor

GPU の製造元です。

説明

このパラメーターの値は、指定された GPU 仕様に対応している必要があります。

nvidia.com

spark.{driver/executor}.resource.gpu.amount

GPU の数です。

説明

このパラメーターを 1 に設定します。

1

spark.{driver/executor}.resource.gpu.discoveryScript

スクリプトファイルが配置されているパスです。

説明

このパラメーターで指定されたスクリプトファイルは、Spark ドライバーまたはエグゼキューターを起動するときに 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

エグゼキューターインスタンスの仕様です。十分な容量を確保するために、エグゼキューターのディスクを拡張します。

次の仕様がサポートされています。

  • 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 メモリ。

    説明
    • 要件に基づいてエグゼキューターインスタンスの仕様を選択します。

    • このパラメーターとともに次の 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)にお問い合わせください。

なし

容量パラメーター

パラメーター

説明

デフォルト値

spark.executor.instances

ジョブに適用されるエグゼキューターの数です。

2

spark.dynamicAllocation.enabled

動的リソース割り当てを有効にするかどうかを指定します。有効な値:

  • true:動的リソース割り当てを有効にします。

  • false:動的リソース割り当てを無効にします。

動的リソース割り当てが有効になると、LDPS はジョブのリアルタイムワークロードに基づいてエグゼキューターを申請および解放します。

true

spark.dynamicAllocation.minExecutors

動的リソース割り当てが有効な場合の最小エグゼキューター数です。

0

spark.dynamicAllocation.maxExecutors

動的リソース割り当てが有効な場合の最大エグゼキューター数です。

説明

最大エグゼキューター数は、指定された同時タスク数と同じです。

無限

spark.dynamicAllocation.executorIdleTimeout

動的リソース割り当てが有効な場合のエグゼキューターの最大アイドル時間です。エグゼキューターが指定された値よりも長い時間アイドル状態の場合、エグゼキューターは解放されます。単位:秒。

600s

実行パラメーター

パラメーター

説明

デフォルト値

spark.speculation

投機的実行を有効にするかどうかを指定します。有効な値:

  • true:投機的実行を有効にします。

  • false:投機的実行を無効にします。

タスクの実行に時間がかかる場合、ドライバーはロングテールを回避するためにタスクを再送信します。

説明

ロングテールとは、一部のタスクの実行時間が他のタスクの実行時間よりも大幅に長いことを示します。

true

spark.task.maxFailures

タスクに許容される最大失敗回数です。タスクが失敗した回数がこの値を超えると、タスクが属するジョブは失敗します。

4

spark.dfsLog.executor.enabled

エグゼキューターのログを LindormDFS に保存するかどうかを指定します。有効な値:

  • true:エグゼキューターのログを LindormDFS に保存します。

  • false:エグゼキューターのログを LindormDFS に保存しません。

LDPS のジョブの規模が大きい場合、このパラメーターを false に設定して、ログストリームによって引き起こされる過剰な DFS 負荷を防ぐことができます。

true

spark.jars

タスクの送信時に必要な JAR パッケージのパスです。このパラメーターの値は、OSS または HDFS のパスにすることができます。

このパラメーターを OSS パスに設定する場合は、次のパラメーターも設定する必要があります。

  • spark.hadoop.fs.oss.endpoint

  • spark.hadoop.fs.oss.accessKeyId

  • spark.hadoop.fs.oss.accessKeySecret

  • spark.hadoop.fs.oss.impl

重要

JDBC を使用して LDFS に接続する場合、このパラメーターは HDFS パスにのみ設定できます。

なし

spark.hadoop.fs.oss.endpoint

OSS のエンドポイントです。エンドポイントの取得方法の詳細については、「リージョンとエンドポイント」をご参照ください。

なし

spark.hadoop.fs.oss.accessKeyId

Alibaba Cloud アカウントまたは Alibaba Cloud アカウントの RAM ユーザーの AccessKey ID です。

AccessKey ID と AccessKey シークレットの取得方法の詳細については、「AccessKey ペアを取得する」をご参照ください。

なし

spark.hadoop.fs.oss.accessKeySecret

Alibaba Cloud アカウントまたは Alibaba Cloud アカウントの RAM ユーザーの AccessKey シークレットです。

AccessKey ID と AccessKey シークレットの取得方法の詳細については、「AccessKey ペアを取得する」をご参照ください。

なし

spark.hadoop.fs.oss.impl

OSS にアクセスするために使用されるクラスです。

このパラメーターを org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem に設定します。

なし

spark.default.parallelism

データソースの同時実行性とシャッフルの同時実行性を含む、非 SQL タスクのデフォルトの同時実行性です。

なし

spark.sql.shuffle.partitions

SQL タスクのデフォルトのシャッフル同時実行性です。

200

監視パラメーター

LDFS では、カスタマイズされたパラメーターを使用してインスタンスの状態を監視できます。これらのパラメーターを設定して、ジョブログにドライバーとエグゼキューターの状態を記録できます。

パラメーター

説明

デフォルト値

spark.monitor.cmd

ジョブ監視のコマンドグループです。複数のコマンドはセミコロン(;)で区切ります。このパラメーターで指定されたコマンドは、一定の間隔で順番に実行されます。コマンドの実行結果はジョブログに記録されます。

監視コマンドの例:

  • システム状態の監視:top -b -n 1、vmstat。

  • メモリ状態の監視:free -m。

  • I/O 状態の監視:iostat -d -x -c -k。

  • ディスク状態の監視:df -h。

  • ネットワーク状態の監視:sar -n DEV 1 1、netstat。

ステートメントの例:

  • 単一の監視コマンドを設定する:

    "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"
重要

Beeline または JDBC を使用してジョブを送信する場合、このパラメーターは設定できません。

なし

spark.monitor.interval

グループ内のコマンドが実行される間隔です。単位:秒。

spark.monitor.cmd パラメーターで指定されたコマンドは、このパラメーターで指定された間隔で実行されます。

60

spark.monitor.timeout

監視コマンドのタイムアウト時間です。単位:秒。

spark.monitor.cmd パラメーターで指定されたコマンドグループ内の監視コマンドの実行時間が指定されたタイムアウト期間を超えた場合、そのコマンドはスキップされ、後続のコマンドが実行されます。このようにして、監視情報はブロックされることなくログに記録できます。

2

オープンソース Spark に関連するパラメーター

オープンソース Spark に関連するパラメーターの詳細については、「Spark 設定」をご参照ください。

設定方法

LDPS にジョブを送信するときに、カスタマイズされたリソースパラメーターを設定できます。設定方法は、ジョブの送信方法によって異なります。

Beeline

Beeline コマンドラインツールが配置されている Spark パッケージの conf/beeline.conf 設定ファイルを編集することで設定方法を指定できます。詳細については、「クイックスタート」をご参照ください。

設定ファイルの内容の例を次に示します。

# Lindorm Compute Engine のエンドポイント。例:jdbc:hive2://123.456.XX.XX:10009/;?token=bb8a15-jaksdj-sdfjsd-ak****
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****

// 接続のユーザー名。デフォルトは root です。
user=root

// 接続のパスワード。デフォルトは root です。
password=root

// 異なるセッション間で Spark リソースを共有するかどうか。デフォルトは true です。
shareResource=false

// 通常の Spark 設定
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3

JDBC

JDBC 接続文字列を使用してパラメーターを設定できます。JDBC URL の詳細については、「アプリケーション開発で JDBC を使用する」をご参照ください。

たとえば、JDBC 接続文字列を使用して、Spark シャッフルパーティションのデフォルト数を 2 に設定し、エグゼキューターが使用するメモリ空間を 8 GB に設定できます。

jdbc:hive2://${host}:${port}/;?token=${token};spark.executor.memory=8g;spark.sql.shuffle.partitions=2

JAR

  • Lindorm コンソールで Java ジョブを送信するときに、ジョブコンテンツテンプレートに基づいて Java ジョブのパラメーターを設定できます。詳細については、「Lindorm コンソールでジョブを管理する」をご参照ください。

  • DMS を使用して Java ジョブを送信する場合、ジョブノードページの [ジョブ設定] セクションでジョブのカスタマイズされたパラメーターを設定できます。詳細については、「DMS を使用してジョブを管理する」をご参照ください。

Python

  • Lindorm コンソールで Python ジョブを送信するときに、ジョブコンテンツテンプレートに基づいて Python ジョブのパラメーターを設定できます。詳細については、「Lindorm コンソールでジョブを管理する」をご参照ください。

  • DMS を使用して Python ジョブを送信する場合、ジョブノードページの [ジョブ設定] セクションでジョブのカスタマイズされたパラメーターを設定できます。詳細については、「DMS を使用してジョブを管理する」をご参照ください。