スパーク・ダイナミック・アロケーションでは、spark.dynamicAllocation.enabled
はデフォルトでfalse
です。
これは、YARNでスパークアプリケーションが実行されているので、spark.shuffle.service.enabled
をtrue
に設定する必要があります。これをチェックしてくださいlink to start the shuffle service on each NodeManager in YARN。
次のような構成にも関連します
spark.dynamicAllocation.minExecutors,
spark.dynamicAllocation.maxExecutors, and
spark.dynamicAllocation.initialExecutors
これらのオプションは--conf <prop_name>=<prop_value>
spark-submit --master yarn-cluster \
--driver-cores 2 \
--driver-memory 2G \
--num-executors 10 \
--executor-cores 5 \
--executor-memory 2G \
--conf spark.dynamicAllocation.minExecutors=5
--conf spark.dynamicAllocation.maxExecutors=30
--conf spark.dynamicAllocation.initialExecutors=10
--class com.spark.sql.jdbc.SparkDFtoOracle2 \
Spark-hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar
を提出スパークから3つの方法
1でアプリケーションをスパークするように構成することができます2.スパークプログラムの中でSparkConf
のプロパティは、それは通常ならばspark-defaults.conf
で同じ構成は、すべてのスパークのアプリケーションに適用する$SPARK_HOME/conf/
場所に位置
val conf: SparkConf = new SparkConf()
conf.set("spark.dynamicAllocation.minExecutors", "5");
conf.set("spark.dynamicAllocation.maxExecutors", "30");
conf.set("spark.dynamicAllocation.initialExecutors", "10");
.....
でSparkSession
またはSparkContext
を作成して設定し
コードだけでなくコマンドラインからの設定も渡されません。
Spark - Dynamic Allocation Confs
私のクラスタでは、spark.dynamicAllocation.enabledがtrueです。 d –
私のクラスタでは、spark.dynamicAllocation.enabledがtrueです。この機能を使用するには、私はプログラム的な同盟関係を行う必要がありますか? Spark-submitコマンドは何が必要ですか? –
必要ありません。上記のいずれかの場所で述べたように、最大エグゼキュータを指定すると問題ありません。 – mrsrinivas