我在分布式环境中最大化Hadoop性能(使用Apache Spark with Yarn),并且我在blog post of Cloudera上使用此配置跟踪提示:
--num-executors 17 --executor-cores 5 --executor-memory 19G
,建议的解决方案是:
8 nodes, 8 core/node, ram 8G/node
但我不明白为什么他们使用17个数字执行器(换句话说,每个节点有3个执行器)。
我们的配置是:
{{1}}
什么是最佳解决方案?
答案 0 :(得分:1)
你的公羊很低。我希望这会更高。
但是,我们从8个节点和8个核心开始。为了确定我们的最大执行者,我们做节点*(cores-1)= 56.每个节点的负1个核心用于管理。
所以我会开始 56名遗嘱执行人,1名遗嘱执行人,1名公羊。
如果您的内存不足,请将内存加倍,使用执行程序,然后使用内核。 28个执行器,2个执行器核心,2G内存 但是你的最大执行者会少一些,因为执行者必须适合一个节点。您最多可以获得24个分配的容器
接下来我将在4个核心之前尝试3个核心,因为3个核心将在每个节点上容纳2个执行器,而4个核心将具有与7相同的执行器。
或者,你可以直接跳到...... 8个执行器,7个内核,7gig ram(想要为群集的其余部分留下一些)。
我还发现如果CPU Scheduling被禁用,纱线覆盖了我的核心设置,并且它总是保持在1,无论我的配置如何。还必须更改其他设置才能启用此功能。
yarn.schedular.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator