纱线不遵守yarn.nodemanager.resource.cpu-vcores
问题描述:
我使用的是Hadoop-2.4.0
,我的系统配置是24核心,96 GB RAM。纱线不遵守yarn.nodemanager.resource.cpu-vcores
我使用以下CONFIGS
mapreduce.map.cpu.vcores=1
yarn.nodemanager.resource.cpu-vcores=10
yarn.scheduler.minimum-allocation-vcores=1
yarn.scheduler.maximum-allocation-vcores=4
yarn.app.mapreduce.am.resource.cpu-vcores=1
yarn.nodemanager.resource.memory-mb=88064
mapreduce.map.memory.mb=3072
mapreduce.map.java.opts=-Xmx2048m
容量调度CONFIGS
queue.default.capacity=50
queue.default.maximum_capacity=100
yarn.scheduler.capacity.root.default.user-limit-factor=2
通过以上CONFIGS,我预计纱线不会推出每个节点超过10个映射器,但它推出28名映射器每个节点。 我做错了什么?
答
YARN运行的容器多于分配的内核,因为默认使用DefaultResourceCalculator。它只考虑内存。
public int computeAvailableContainers(Resource available, Resource required) {
// Only consider memory
return available.getMemory()/required.getMemory();
}
使用DominantResourceCalculator,它同时使用cpu和内存。
设置以下配置在能力scheduler.xml
yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
好的答案陪代码样本与未来的读者解释。当问这个问题的人可能会理解你的答案时,解释你如何到达它会帮助无数其他人。 – Stonz2 2014-08-29 15:06:00
@ Stonz2我对不完整的答案表示歉意。我问了这个问题,接下来的4-5小时没有答案,它只有5个视图。同时我也调试了代码并找到了答案。为了帮助其他人,我很快添加了所需的配置,我不得不围绕它运行更多的实验。 – banjara 2014-08-29 17:07:38
我花了几个小时试图弄清楚为什么YARN告诉我在我的节点上有可用的负数的核心数! – jonson 2016-01-07 01:44:03