Hadoop 为什么映射和减少同时运行?

Hadoop 为什么映射和减少同时运行?,hadoop,mapreduce,Hadoop,Mapreduce,我是Hadoop的新手。我记得我从某个地方学到,在Hadoop中,所有map函数都必须在reduce函数启动之前完成 但是当我运行这样的map reduce程序时,我刚刚得到了打印输出: map(15%), reduce(5%) map(20%), reduce(7%) map(30%), reduce(10%) map(38%), reduce(17%) map(40%), reduce(25%) 为什么它们并行运行?在实际减少阶段开始之前,洗牌、排序和合并将随着映射者不断完成而进行。这个百

我是Hadoop的新手。我记得我从某个地方学到,在Hadoop中,所有map函数都必须在reduce函数启动之前完成

但是当我运行这样的map reduce程序时,我刚刚得到了打印输出:

map(15%), reduce(5%)
map(20%), reduce(7%)
map(30%), reduce(10%)
map(38%), reduce(17%)
map(40%), reduce(25%)

为什么它们并行运行?

在实际减少阶段开始之前,洗牌、排序和合并将随着映射者不断完成而进行。这个百分比意味着。这不是实际的减少阶段。如果框架继续等待所有映射器的完成,然后再进行洗牌、排序和合并,这将同时减少开销。

是的,不用说,在进行洗牌之前,还原器还必须复制映射器输出数据。这也是一个很大的进步。@SeanOwen:说得对,先生。谢谢大家,这是说,Hadoop可以把诸如Shuffle、Sort之类的东西放进去。。。。还原过程的百分比?为什么不在映射过程中呢?因为在映射阶段之前并没有任何东西需要洗牌、排序或合并。它发生在映射程序发出的键值对上,这在映射阶段之前是不可能的。映射程序还将在映射端对自己的输出子集进行排序——这也是它运行组合器的方式。但它也必须与其他映射器在reduce端的输出进行排序/合并。