我会在分布式环境中最大化Hadoop性能(使用Apache Spark和Yarn(,我正在遵循Cloudera博客文章中的提示,具有以下配置:
6 nodes, 16 core/node, ram 64G/node
建议的解决方案是: --num-executors 17 --executor-cores 5 --executor-memory 19G
但我不明白为什么他们使用 17 个执行器(换句话说,每个节点 3 个执行器(。
我们的配置是:
8 nodes, 8 core/node, ram 8G/node
最好的解决方案是什么?
你的公羊很低。我希望这个会更高。
但是,我们从 8 个节点和 8 个内核开始。为了确定我们的最大执行器,我们做节点*(cores-1(= 56。每个节点减去 1 个核心进行管理。
所以我会从56 个执行器,1 个执行器核心,1G 内存。
如果您有内存不足的问题,请将 ram 加倍,让执行器,增加内核。28 个执行器、2 个执行器内核、2G 内存但是您的最大执行器数量会更少,因为执行器必须适合节点。您最多可以获得 24 个分配的容器。
接下来我会在 4 个内核之前尝试 3 个内核,因为 3 个内核在每个节点上可容纳 2 个执行器,而对于 4 个内核,您将拥有与 7 个相同的执行器。
或者,您可以直接跳到...8 个执行器,7 个内核,7GB RAM(想为集群的其余部分留下一些(。
我还发现,如果 CPU 调度被禁用,yarn 会覆盖我的核心设置,并且无论我的配置如何,它总是保持在 1。还必须更改其他设置才能打开此功能。
yarn.schedular.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator