次のようなパラメーターでSparkジョブを実行するためにspark-summitコマンドを使用しています:
spark-submit --master yarn-cluster --driver-cores 2 \
--driver-memory 2G --num-executors 10 \
--executor-cores 5 --executor-memory 2G \
--class com.spark.sql.jdbc.SparkDFtoOracle2 \
Spark-Hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar
ここで、Sparkの動的リソース割り当てを使用して同じプログラムを実行したいと思います。 Sparkプログラムの実行における動的リソース割り当ての使用について教えてください。
In Spark動的割り当てspark.dynamicAllocation.enabled
はデフォルトでtrue
であるため、false
に設定する必要があります。
sparkアプリケーションはYARNで実行されているため、これにはspark.shuffle.service.enabled
をtrue
に設定する必要があります。これを確認してください 各NodeManagerでシャッフルサービスを開始するためのリンクYARNで 。
次の構成も関連しています。
spark.dynamicAllocation.minExecutors,
spark.dynamicAllocation.maxExecutors, and
spark.dynamicAllocation.initialExecutors
これらのオプションは、3つの方法でSparkアプリケーションに設定できます
1。 From Spark --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
2。内部SparkプログラムとSparkConf
SparkConf
にプロパティを設定し、それを使用してSparkSession
またはSparkContext
を作成します
val conf: SparkConf = new SparkConf()
conf.set("spark.dynamicAllocation.minExecutors", "5");
conf.set("spark.dynamicAllocation.maxExecutors", "30");
conf.set("spark.dynamicAllocation.initialExecutors", "10");
.....
3。 spark-defaults.conf
は通常$SPARK_HOME/conf/
にあります
spark-defaults.conf
に同じ構成を配置して、すべてのsparkアプリケーションに、コマンドラインおよびコードから構成が渡されない場合に適用します。