为什么分配给Spark的Executor数量和Cores与请求值不符?

作为《为什么 Spark UI 上显示的 Executor Cores 与 Yarn 上的 vCore 数量不符?》的姊妹篇,我们再来看另外一种更“离奇”的情况,这种情况下,Spark UI上显示的Executor数量和每个Executor占用的核数与请求值完全对应不上。如果再仔细观察一下可以发现如下规律:实际分配的Executor数量往往比申请的数量少,单个Executor的合数一般比申请的值大,但是:总的分配的核数与申请的数量(--num-executors × --executor-cores)是可以对齐的。

特别说明的是:本文描述的情况排除了集群不足和DynamicAllocation等众所周知的原因,其次,本文讨论的这一问题仅限于AWS EMR集群上(并非所有EMR版本都有此问题,本文测试的是:EMR 6.11),OSS Spark没有此问题。接下来,我们先看一下测试的情况。

集群配置

为了便于观察资源占用情况,我们特别使用了只有一个Worker节点的EMR集群,版本为EMR 6.11(注意:不是所有的EMR版本都会表现出本文描述的情形,例如 EMR 6.8,因为集群的默认配置会有差异,具体差异后面会单独解释) ,其中:Master节点:8 vCore / 64 GB, 1个Core节点:16 vCore / 128 GB,总计

猜你喜欢

转载自blog.csdn.net/bluishglc/article/details/132533552