把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
每一個節點可用的內存,單位是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/ 還有一些參數參考這裏