我希望在分布式环境中最大限度地提高hadoop的性能(使用ApacheSpark和yarn),并遵循cloudera博客文章中关于此配置的提示:
6 nodes, 16 core/node, ram 64G/node
建议的解决方案是: --num-executors 17 --executor-cores 5 --executor-memory 19G
但是我不明白为什么他们使用17个num执行器(换句话说,每个节点有3个执行器)。
我们的配置是:
8 nodes, 8 core/node, ram 8G/node
最好的解决方案是什么?
1条答案
按热度按时间ui7jx7zq1#
你的公羊很矮。我希望这个更高。
但是,我们从8个节点和8个核心开始。要确定最大执行器,我们需要节点*(cores-1)=56。从每个节点中减去1个用于管理的核心。
所以我会从56个执行器开始,1个执行器核心,1g内存。
如果你有内存不足的问题,加倍的ram,让执行器,向上的核心。28个执行器,2个执行器内核,2g ram,但您的最大执行器数将更少,因为一个执行器必须适合一个节点。您最多可以获得24个分配的容器。
我会先尝试3个核心,然后再尝试4个核心,因为3个核心可以在每个节点上容纳2个执行器,而4个核心的执行器与7个相同。
或者,你可以直接跳到。。。8个执行器,7个内核,7gig ram(希望为集群的其余部分保留一些)。
我还发现,如果cpu调度被禁用,那么yarn将覆盖我的cores设置,并且无论我的配置如何,它总是保持在1。还必须更改其他设置才能启用此功能。
yarn.schedular.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator