Arv*_*mar 8 hadoop hadoop-yarn apache-spark
我正在使用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
Run Code Online (Sandbox Code Playgroud)
现在我想使用Spark的动态资源分配执行相同的程序.在执行Spark程序时,能否帮助您使用动态资源分配.
在星火动态分配spark.dynamicAllocation.enabled需要被设置为true,因为它是false在默认情况下.
这需要spark.shuffle.service.enabled设置为true,因为火花应用程序在YARN上运行.检查此链接以在YARN中的每个NodeManager上启动shuffle服务.
以下配置也相关:
spark.dynamicAllocation.minExecutors,
spark.dynamicAllocation.maxExecutors, and
spark.dynamicAllocation.initialExecutors
Run Code Online (Sandbox Code Playgroud)
可以通过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
--class com.spark.sql.jdbc.SparkDFtoOracle2 \
Spark-hive-sql-Dataframe-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)
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");
.....
Run Code Online (Sandbox Code Playgroud)
3. spark-defaults.conf通常位于$SPARK_HOME/conf/
spark-defaults.conf如果没有从命令行和代码传递配置,则将相同的配置放入以应用所有spark应用程序.
| 归档时间: |
|
| 查看次数: |
5795 次 |
| 最近记录: |