您的位置:首页 > 运维架构

Hadoop参数性能调优(二)--Map and Reduce tasks 数量

2011-05-18 10:20 323 查看
Hadoop wiki(http://wiki.apache.org/hadoop/HowManyMapsAndReduces)对这个问题有较详细的解释,大致有以下几个观点:

增加task的数量,一方面增加了系统的开销,另一方面增加了负载平衡和减小了任务失败的代价;
map task的数量即mapred.map.tasks的参数值,用户不能直接设置这个参数。Input Split的大小,决定了一个Job拥有多少个map。默认input split的大小是64M(与dfs.block.size的默认值相同)。然而,如果输入的数据量巨大,那么默认的64M的block会有几万甚至几十万的Map Task,集群的网络传输会很大,最严重的是给Job Tracker的调度、队列、内存都会带来很大压力。mapred.min.split.size这个配置项决定了每个
Input Split的最小值,用户可以修改这个参数,从而改变map task的数量。
一个恰当的map并行度是大约每个节点10-100个map,且最好每个map的执行时间至少一分钟。
reduce task的数量由mapred.reduce.tasks这个参数设定,默认值是1。
合适的reduce task数量是0.95或者1.75*(nodes * mapred.tasktracker.reduce.tasks.maximum), 其中,mapred.tasktracker.tasks.reduce.maximum的数量一般设置为各节点cpu
core数量,即能同时计算的slot数量。对于0.95,当map结束时,所有的reduce能够立即启动;对于1.75,较快的节点结束第一轮reduce后,可以开始第二轮的reduce任务,从而提高负载均衡。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: