web-dev-qa-db-ja.com

動的リソース割り当てを使用してSparkプログラムを実行する方法は?

次のようなパラメーターで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プログラムの実行における動的リソース割り当ての使用について教えてください。

10
Arvind Kumar

In Spark動的割り当てspark.dynamicAllocation.enabledはデフォルトでtrueであるため、falseに設定する必要があります。

sparkアプリケーションはYARNで実行されているため、これにはspark.shuffle.service.enabledtrueに設定する必要があります。これを確認してください 各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アプリケーションに、コマンドラインおよびコードから構成が渡されない場合に適用します。

Spark-動的割り当て会議

7
mrsrinivas

Sparkの動的なリソース割り当てを使用して小さなデモを行いました。コードは私の Github にあります。具体的には、デモは このリリース にあります。

0
Avinash Kumar