美好的一天...我有点困惑;化简任务和化简作业有什么区别?这是我的情况;我读过,在所有映射完成之前,reduce不会开始......但在 Hadoop 输出中,我看到的是其他情况:
12/02/11 10:58:50 INFO mapred.JobClient: map 60% reduce 16%
12/02/11 10:58:54 INFO mapred.JobClient: map 60% reduce 20%
12/02/11 10:58:55 INFO mapred.JobClient: map 65% reduce 20%
减少是 16%,而地图仍然是 60%......这里到底发生了什么?
"reduce阶段"有三个阶段:shuffle,sort,reduce。随机播放复制数据,排序将键分组在一起。reduce是您编写的实际reduce
函数。
百分比的工作方式是随机排序为 33%,排序为 33%,减少为 33%。您看到的是"大约 16%/33%(即 48%)的数据已复制到化简器"。最后 33% 的"reduce"在所有映射器完成之前无法开始。
一旦第一个映射器完成对其输入的处理,化简器就会开始复制映射器生成的输出,但在所有映射器完成执行其任务之前,化简器无法处理输入。这背后的原因是化简器可能会从未完成的映射器接收更多输入数据,这可能会改变它处理其输入的顺序。
您在控制台上看到的化简器的完成百分比表示化简器正在从映射器复制数据。