为什么 dataproc 在配置 spark.yarn.executor.memoryOverhead 时不为每个工作线



Dataproc应该为每个worker(或yarn NodeManager(容纳两个执行器,每个执行器获得一半的内核和一半的内存。它确实以这种方式工作。

但是,如果我们覆盖一个设置,比如 spark.yarn.executor.memoryOverhead=4096

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

如何让 dataproc 仍然为每个工人创建 2 个执行器?纱线开销是从执行器内存中扣除的,所以它应该仍然能够容纳 2 个执行器,不是吗?

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

最新更新