MapReduce中如何控制reducer的数量

1,在缺省情况下,一个mapreduce的job只有一个reducer;在大型集群中,需要使用许多reducer,中间数据都会放到一个reducer中处理,如果reducer数量不够,会成为计算瓶颈。

2,reducer的最优个数与集群中可用的reducer的任务槽数相关,一般设置比总槽数稍微少一些的reducer数量;hadoop文档中推荐了两个公式:

0.95*NUMBER_OF_NODES*mapred.tasktracker.reduce.tasks.maximum

1.75*NUMBER_OF_NODES*mapred.tasktracker.reduce.tasks.maximum

备注:NUMBER_OF_NODES是集群中的计算节点个数;

mapred.tasktracker.reduce.tasks.maximum:每个节点所分配的reducer任务槽的个数;

3,在代码中通过:JobConf.setNumReduceTasks(Int numOfReduceTasks)方法设置reducer的个数;
--------------------- 
作者:播种生活 
来源:CSDN 
原文:https://blog.csdn.net/momomi_2005/article/details/23050605 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/xiaoyutongxue6/article/details/84069830
今日推荐