怎样控制tasktracker/NodeManagers的mapper/container个数问题

来源:互联网 发布:php stringcontains 编辑:程序博客网 时间:2024/05/09 10:26

如果一个mapper占用内存比较多,用hadoop默认配置的话会在一个task node执行多个mapper实例,这样老是因内存不够被kill.一个mapper都不能正常被执行完。

那怎么控制map/reduce的mapper在task中不并发?

找到一个http://my.oschina.net/cloudcoder/blog/292528?p=1  大致说:

在MR1版本,可通过下面两个参数设置TaskTracker的map和reduce插槽数:
mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum

在yarn中用下面的参数控制
yarn.nodemanager.resource.memory-mb 
表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
yarn.nodemanager.resource.cpu-vcores
表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。

详细信息见 http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-memory-cpu-scheduling/

我用的是Hadoop2.6也就是Yarn。具体怎么通过yarn.nodemanager.resource.memory-mb  和yarn.nodemanager.resource.cpu-vcores控制插槽数量呢
见http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html
里面描述了插槽数是怎么根据memory-mb和cpu-vcores得到的。

公式是:maximum number of containers = min (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)

设置可参照 http://www.tuicool.com/articles/Rf6v6j



另外http://langyu.iteye.com/blog/910677 这里也有提到。


-----------------------------------------------------------------------------------------------------------------------------------------------
配置文件        配置项名称        配置项值
yarn-site.xml        yarn.nodemanager.resource.memory-mb        = Containers个数* 每个Container内存
yarn-site.xml        yarn.scheduler.minimum-allocation-mb        = 每个Container内存
yarn-site.xml        yarn.scheduler.maximum-allocation-mb        = Containers个数* 每个Container内存
mapred-site.xml        mapreduce.map.memory.mb        = 每个Container内存
mapred-site.xml        mapreduce.reduce.memory.mb        = 2 * 每个Container内存
mapred-site.xml        mapreduce.map.java.opts        = 0.8 * 每个Container内存
mapred-site.xml        mapreduce.reduce.java.opts        = 0.8 * 2 * 每个Container内存
yarn-site.xml (check)        yarn.app.mapreduce.am.resource.mb        = 2 * 每个Container内存

yarn-site.xml (check)        yarn.app.mapreduce.am.command-opts        = 0.8 * 2 * 每个Container内存

from http://www.dataguru.cn/thread-480519-1-1.html

-----------------------------------------------------------------------------------------------------------------------------------------------

深入理解Hadoop YARN中的Container概念  http://dongxicheng.org/mapreduce-nextgen/understand-yarn-container-conc



0 0
原创粉丝点击