我们有一个Yarn集群,我们使用spark 2.3.2版本。我想在提交spark应用程序时使用spark的动态资源分配,但是在spark-defaults.conf文件中,属性的值 spark.executor.instances
设置为16。据我所知,我不应该 spark.executor.instances
如果我们想使用动态资源分配。否则,即使启用了动态资源分配,也会被属性覆盖 spark.executor.instances
.
我无法编辑spark-defaults.conf,所以我想重置分配给的值 spark.executor.instances
通过 --conf
要提交的参数。我尝试将其设置为空白或0,但在这两种情况下,作业都失败了 spark.executor.instances
应该是正数。
在这种情况下,如何成功地使用spark的动态资源分配?。
另一个观察是,我没有看到spark-defaults.conf文件中启用了动态资源分配。它不是spark 2.0以来的默认属性吗?。
2条答案
按热度按时间798qvoo81#
无法重置配置
spark.executor.instances
. 如果启用了动态资源分配以及spark.executor.instances
,然后是参数spark.executor.instances
用于计算所需执行者的初始数目initial executors = max(spark.executor.instances,spark.dynamicAllocation.initialExecutors,spark.dynamicAllocation.minExecutors)
只要我们设定spark.dynamicAllocation.initialExecutors
或者spark.dynamicAllocation.minExecutors
超过spark.executor.instances
,配置spark.executor.instances
对动态资源分配没有任何影响。xdnvmnnf2#
在这里阅读动态分配
https://dzone.com/articles/spark-dynamic-allocation
这将给你一个简单的工作原理。