我有一个启动了动态资源分配的群集上运行的spark作业。我提交了num executors和executor内存属性的spark作业。在这里优先做什么?作业将使用动态分配还是我在配置中提到的资源运行?
答案 0 :(得分:1)
这取决于哪个配置参数具有更大的值...
spark.dynamicAllocation.initialExecutors
或spark.executor.instances
或--num-executors
(在运行时通过终端启动时)
如果您在YARN上使用Cloudera,并确保您根据所处环境查看正确的CDH版本,此处是参考文档。
Apache YARN文档也是如此:
https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation
因此,如果使用--num-executors
来总结一下,除非您将spark.dynamicAllocation.initialExecutors
设置为更高的值,否则很可能会覆盖(取消和不使用)动态分配。
答案 1 :(得分:0)
configuration documentation(2.4.4)谈到spark.dynamicAllocation.initialExecutors
:
如果启用了动态分配,则要运行的执行程序的初始数量。 如果设置了
--num-executors
(或spark.executor.instances
)并且大于该值,则它将用作执行者的初始数量。
所以对我来说,如果设置了动态分配(即spark.dynamicAllocation.enabled
为true
),那么它将被使用,并且执行者的初始数量将简单地是max(spark.dynamicAllocation.initialExecutors
,{ {1}})