为什么在配置spark.yarn.executor.memoryOverhead时,dataproc不会为每个worker创建两个执行程序?

时间:2017-05-09 23:42:45

标签: google-cloud-dataproc

Dataproc应该适合每个工作者(或一个节点NodeManager)的两个执行器,每个执行器获得一半内核和一半内存。 它确实有效。

但是,如果我们覆盖设置,请说spark.yarn.executor.memoryOverhead = 4096

然后它只为每个工人创建一个Executor。没有利用集群的一半核心和内存。无论我们如何使用spark.executor.memory或spark.executor.cores,它仍然没有启动足够的执行程序来利用所有集群资源。

如何让dataproc仍为每个工人创建2个执行程序?纱线开销是从执行者记忆中扣除的,所以它应该仍然能够适合2个遗嘱执行人,不应该吗?

1 个答案:

答案 0 :(得分:2)

在YARN中执行时,Spark将请求内存大小为spark.executor.memory + spark.yarn.executor.memoryOverhead的容器。如果您要添加到memoryOverhead,则需要从spark.executor.memory中减去相等的数量,以保留相同的容器包装特征。