hadoop减少分割大小

时间:2016-06-29 22:17:47

标签: hadoop mapreduce

我有一个使用少量数据(200 MB)的Mapreduce作业。地图阶段在计算上很简单,但是减少阶段在计算上可能是昂贵的,花费更多时间来分析一个输入。给定32 MB的分割大小,我看到在映射阶段所有计算机都在计算,但在reduce阶段只有一个,并且reduce阶段经历的速度要慢得多。有没有办法只在作业的减少阶段使分割更小,以便我可以将所有机器用于减少阶段?

1 个答案:

答案 0 :(得分:1)

拆分大小不会影响降低并行度。它只会驱动映射器的数量。

MapReduce要求您指定要使用的减速器数量。您可以设置mapreduce.job.reduces属性,默认为1,或使用Job.setNumReduceTasks(int tasks)see javadoc)。在这里,你想增加这个数字。

像Apache Crunch这样的高级工具会自动根据输入的大小设置减速器的数量,为每个减速器提供缩放系数和目标输入大小。如果硬编码一些任务不符合您的需求,您可以轻松实现类似的策略。