Spark动态分配

时间:2019-04-28 15:06:05

标签: apache-spark pyspark apache-spark-sql spark-streaming

我有一个启动了动态资源分配的群集上运行的spark作业。我提交了num executors和executor内存属性的spark作业。在这里优先做什么?作业将使用动态分配还是我在配置中提到的资源运行?

2 个答案:

答案 0 :(得分:1)

这取决于哪个配置参数具有更大的值...

spark.dynamicAllocation.initialExecutorsspark.executor.instances--num-executors(在运行时通过终端启动时)

如果您在YARN上使用Cloudera,并确保您根据所处环境查看正确的CDH版本,此处是参考文档。

https://www.cloudera.com/documentation/enterprise/6/6.2/topics/cdh_ig_running_spark_on_yarn.html#spark_on_yarn_dynamic_allocation__table_tkb_nyv_yr

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.enabledtrue),那么它将被使用,并且执行者的初始数量将简单地是max(spark.dynamicAllocation.initialExecutors,{ {1}})