Sparkの設定パラメータ一覧 ~環境変数編
-
タグ:
- #Spark
Sparkに関して、環境変数関連の設定値を一覧化してまとめました。
Spark本体の設定値に関してはここにまとめてあります。
環境変数の設定
※赤字がパフォーマンスに関連しそうなプロパティ
環境変数 | 内容 | デフォルト |
SPARK_MASTER_IP | マスターを特定のIPアドレス、例えば公開されているIPアドレス、にバインドします。 | |
SPARK_MASTER_PORT | 異なるポート(デフォルト: 7070)でマスターを開始します。 | |
SPARK_MASTER_WEBUI_PORT | マスターweb UIのポート | 8080 |
SPARK_MASTER_OPTS | -Dx=yの形式でマスターにのみ適用される設定プロパティ 可能なオプションのリストは以下を見てください。 | 無し |
SPARK_LOCAL_DIRS | Sparkが"スクラッチ"するためのディレクトリ。mapの出力ファイルやディスクに格納されるRDDが含まれます。これはシステムの高速でローカルのディスク上になければなりません。異なるディスク上の複数のディレクトリのカンマ区切りのリストもありえます。 | |
SPARK_WORKER_CORES | Spark アプリケーションがマシーン上で使用する総コア数。 | 利用可能な全てのコア |
SPARK_WORKER_MEMORY | Sparkアプリケーションがマシーン上で使用できる総メモリ量。例えば 1000m, 2g; 各アプリケーションの 個々の メモリはspark.executor.memory プロパティを使って設定されることに注意してください。 | 総メモリから1GBを引いたもの |
SPARK_WORKER_PORT | 特定のポートでSparkワーカーを開始する。 | ランダム |
SPARK_WORKER_WEBUI_PORT | ワーカーweb UIのポート 。 | 8081 |
SPARK_WORKER_INSTANCES | 各マシーン上で実行するワーカーインスタンスの数 。もしとても大きなマシーンがあって複数のワーカープロセスを実行したい場合は、これを1以上にすることができます。もしこれを設定する場合は、ワーカーあたりのコアを制限するために明示的にSPARK_WORKER_CORESも設定するようにしてください。そうでなければ、各ワーカーは全てのコアを使用しようとするでしょう。 | 1 |
SPARK_WORKER_DIR | 中でアプリケーションを実行するディレクトリで、ログおよび作業スペースの両方を含むでしょう | SPARK_HOME/work |
SPARK_WORKER_OPTS | -Dx=yの形式でワーカーにのみ適用される設定プロパティ。可能なオプションのリストは以下を見てください。 | 無し |
SPARK_DAEMON_MEMORY | Spark マスターとワーカーデーモン自身に割り当てるメモリ。 | 1g |
SPARK_DAEMON_JAVA_OPTS | Sparkマスターとワーカーデーモン自身の"-Dx=y"形式のJVMオプション。 | (none) |
SPARK_PUBLIC_DNS | Sparkマスターおよびワーカーの公開DNS名。 | (none) |
注意: 起動スクリプトは現在のところWindowsをサポートしません。SparkクラスタをWindows上で動作するには、手動でマスターおよびワーカーを開始してください。
SPARK_MASTER_OPTS は以下のシステムプロパティをサポートします。
プロパティ名 | 内容 | デフォルト |
spark.deploy.retainedApplications | 表示するための完了したアプリケーションの最大数。古いアプリケーションはこの制限を維持するためにUIから落とされるでしょう。 | 200 |
spark.deploy.retainedDrivers | 表示するための完了したドライバーの最大数。古いドライバーはこの制限を維持するためにUIから落とされるでしょう。 | 200 |
spark.deploy.spreadOut | スタンドアローンクラスタマネージャーがノードを渡ってアプリケーションを拡散しなければならないか、あるいはできるだけ少ない数のノード上で固めるかどうか。Spreading out is usually better for data locality in HDFS, but consolidating is more efficient for compute-intensive workloads. | TRUE |
spark.deploy.defaultCores | spark.cores.maxを設定しない場合は、スパークスタンドアローンモードでアプリケーションに渡すデフォルトのコアの数。設定しない場合は、spark.cores.maxを設定しない限りはアプリケーションは常に利用可能な全てのコアを取得します。共有クラスタ上ではユーザがデフォルトでクラスタ全体を占拠することを防ぐためにこれを少なく設定します。 | (infinite) |
spark.worker.timeout | スタンドアローンデプロイマスターがハートビートを受け取らない場合にワーカーを失ったと見なすまでの秒数。 | 60 |
SPARK_WORKER_OPTSは以下のシステムプロパティをサポートします。
プロパティ名 | 内容 | デフォルト |
spark.worker.cleanup.enabled | 定期的な ワーカー/アプリケーション ディレクトリの掃除を有効にする。YARNは異なる動作をするため、これはスタンドアローンモードにのみ影響することに注意してください。停止したアプリケーションのディレクトリのみが掃除されます。 | FALSE |
spark.worker.cleanup.interval | ワーカーがローカルマシーン上の古いアプリケーションディレクトリを掃除する間隔を秒数で制御します。 | 1800 (30 分) |
spark.worker.cleanup.appDataTtl | 各ワーカー上でアプリケーションのワークディレクトリを維持する秒数。これは生存時間で、利用可能なディスクの量に依存します。アプリケーションログおよびjarは各アプリケーションワークディレクトリにダウンロードされます。ジョブを頻繁に実行する場合は特に、時間が経つにつれてワークディレクトリは急速にディスクスペースを埋めます。 | 7 * 24 * 3600 (7 日) |
SPARK_WORKER_INSTANCESとSPARK_WORKER_CORESの理解
例)以下の2つの設定の違い
(a)
SPARK_WORKER_INSTANCES = 8
SPARK_WORKER_CORES = 1
(b)
SPARK_WORKER_INSTANCES = 1
SPARK_WORKER_CORES = 8
解)
(a)
→1つのコアを持つ8つのworkerを与える
→シングルスレッドJVMを8つ起動する
(b)
→1つのworkerに8つのコアを与える
→8スレッドJVMを1つ起動する
パフォーマンスとして、データサイズが小さい場合、(a)のケースでは8個のJVMを起動するため時間的に(b)の方が優れている。さらに(a)は8台のマシンが必要になる。
処理するデータが非常に大きい場合、JVMの起動時間は無視できるので(a)の方が優れている。(b)は処理に8倍のメモリを使用する?