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倍のメモリを使用する?  



投稿日:2018-11-12    更新日:2018-11-13

[スポンサーリンク]

サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]