YARN资源管理

把CDH搭建起来了,跑其中的例子程序word-count。在控制台界面一直显示map 0%  reduce 0% , 经过web页面查看job的状态一直是run,可是map没有执行。感受是是资源的分配有问题。接着查看了任务的日志。java

2014-07-04 17:30:37,492 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=0
2014-07-04 17:30:37,492 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 2
2014-07-04 17:30:38,496 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Ramping down all scheduled reduces:0
2014-07-04 17:30:38,496 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Going to preempt 0

 

日志中没有任何的错误,可是一直打印该信息,应该是RM资源分配不够。node

YARN中,资源包括内存和CPU,资源的管理是由ResourceManager和NodeManager共同完成,ResourceManager负责全部节点资源的管理和调度。NodeManager负责进程所在结点资源的分配和隔离。ResourceManager将某个NodeManager上资源分配给任务。下面详细介绍其中的一些重要参数。web

yarn.nodemanager.resource.memory-mb

每一个节点可用的内存,单位是mb,默认是8G,用于供NodeManager分配的。我出现的问题是资源分配过小,只有1G。apache

yarn.scheduler.minimum-allocation-mbapp

单个任务可申请的最小内存,默认是1024mb,稍微大一点,避免小的资源浪费状况,我本机资源少,因此给他分配了512mb, 失败的缘由也就是这个分配过大。jvm

yarn.scheduler.maximum-allocation-mboop

单个任务可申请的最大内存,默认是8192mb. 若是是spark任务的话,这里调大吧spa

mapreduce.map.memory.mb日志

每一个map任务的物理内存限制,应该大于或等于yarn.scheduler.minimum-allocation-mb进程

mapreduce.reduce.memory.mb

每一个reduce任务的物理内存限制

mapreduce.map.java.opts

每一个map进程的jvm堆的大小

mapreduce.reduce.java.opts

每一个reduce进程的jvm堆的大小

 

每一个节点能够运行map数和redue输,由yarn.nodemanager.resource.memory-mb除于mapreduce.map.memory.mb和mapreduce.reduce.memory.mb获得

 

http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-memory-cpu-scheduling/   还有一些参数参考这里

相关文章
相关标签/搜索