0

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

4

1 回答 1

0

如果你没有配置reducer,map输出在写入磁盘之前不会排序。

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

[1] 对可能的 nit-pickers 的补充:一旦其输出缓冲区被填满,map 任务就会开始排序。这个排序的段被溢出到磁盘并在映射任务结束时与所有其他溢出的段合并,直到出现单个排序文件。发送单个文件(甚至可能是压缩文件)对于带宽使用/传输性能要高效得多。在 reducer 端,排序后的文件将再次合并。最后一个合并通道直接流入reduce方法。

于 2013-10-28T19:46:57.610 回答