使用和不使用reducer的map-reduce作业的时间之间的比较

时间:2013-10-28 19:42:59

标签: hadoop mapreduce

在我的Hapoop工作中,当我将减速器的数量设置为0时,映射阶段比减速器的数量不为0的情况要快得多。在映射阶段的开始,有减速器运行,所以我不明白为什么映射时间会急剧增加。

1 个答案:

答案 0 :(得分:0)

如果尚未配置reducer,则在写入磁盘之前不会对映射输出进行排序。

原因是Hadoop使用外部排序算法,这意味着map任务对其任务输出进行排序[1]。然后,reducer将已排序的地图输出段合并在一起。 如果没有reducer,则无需对密钥进行分组 - 因此无需进行排序。

[1]添加可能的挑选者:一旦填充了输出缓冲区,映射任务就会开始排序。此已排序的段将溢出到磁盘,并在映射任务的末尾与所有其他溢出的段合并,直到出现单个已排序的文件。发送单个文件(甚至可以压缩)对于带宽使用/传输性能更有效。在reducer端,然后将再次合并已排序的文件。最后一次合并传递直接流入reduce方法。

相关问题