gpt4 book ai didi

apache-spark - 如何使用动态资源分配执行 Spark 程序?

转载 作者:可可西里 更新时间:2023-11-01 14:14:56 24 4
gpt4 key购买 nike

我正在使用 spark-summit 命令执行 Spark 作业,参数如下:

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 程序时使用动态资源分配。

最佳答案

在Spark动态分配中spark.dynamicAllocation.enabled需要设置为true因为它是false默认。

这需要 spark.shuffle.service.enabled设置为 true ,因为 spark 应用程序在 YARN 上运行。检查这个link to start the shuffle service on each NodeManager in YARN .

以下配置也是相关的:

spark.dynamicAllocation.minExecutors, 
spark.dynamicAllocation.maxExecutors, and
spark.dynamicAllocation.initialExecutors

这些选项可以通过 3 种方式配置到 Spark 应用程序

<强>1。从 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 \ # same as --num-executors 10
--class com.spark.sql.jdbc.SparkDFtoOracle2 \
Spark-hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar

<强>2。带有 SparkConf 的内部 Spark 程序

SparkConf 中设置属性然后创建 SparkSessionSparkContext有了它

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 - Dynamic Allocation Confs

关于apache-spark - 如何使用动态资源分配执行 Spark 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com