2016-09-18 56 views
6

我通过明确的指导阅读和网络包括一个here洗牌和排序的MapReduce

我的问题上其他一些环节是

其中究竟洗牌和排序发生呢?

根据我的理解,它们都发生在mappers和reducer上。但是一些链接提到,映射器上发生的混洗以及对减速器的排序。

有人可以确认我的理解是否正确;如果不是,他们可以提供额外的文件,我可以通过?

回答

5

洗牌:

的MapReduce使得该输入到每一个减速器由键排序的保证。系统执行排序和transfers map outputs to the reducers as inputs的过程称为混洗。

排序:

排序发生在MapReduce的程序的各个阶段,所以还可以在地图中存在和减少阶段。

请看看这个图 enter image description here

在地图中添加更多的描述上面的图像和减少阶段。

地图边:

当map函数开始产生输出,它不是简单地写入磁盘。在将输出写入映射到磁盘之前,将首先将它们最终发送到的线程divides the data into partitions corresponding to the reducers。在每个分区中,background thread performs an in-memory sort by key

的减少副作用:

当所有的地图输出已被复制,Reduce任务移动到排序阶段(这应该适当地称为合并阶段,作为分选在地图上进行侧),它合并地图输出,保持排序顺序。这将在一轮中完成。

来源:Hadoop权威指南。

+0

对,回到我原来的问题,洗牌和排序都发生在mappers和reducer上吗? – red

+0

是的!在各种情况下,映射器和缩减器都会进行混洗和排序。 – mrsrinivas