洗牌阶段实际上做了什么?

时间:2017-06-04 06:05:12

标签: hadoop mapreduce shuffle mapper reducers

洗牌阶段实际上做了什么?

A)由于shuffling是将mapper o / p引入reducer o / p的过程,它只是根据分区器中编写的代码将映射器中的特定键带到特定的reducer

  

例如。映射器1的o / p是{a,1} {b,1}

     

映射器2的o / p是{a,1} {b,1}

在我的分区程序中,我写过所有按键以' a'开头。将转到减速器1,所有以' b开头的键将转到减速器2,因此o / p将是:

  

reducer 1:{a,1} {a,1}

     

reducer 2:{b,1} {b,1}

B)或者与上面的过程一起,它还对键进行分组:

所以,o / p将是:

  

reducer 1:{a,[1,1]}

     

reducer 2:{b,[1,1]}

在我看来,我认为它应该只是一点因为在排序之后必须进行密钥的搜索,因为排序只是为了让reducer在一个键结束而另一个键开始时很容易指出。如果是的话,什么时候实际发生了密钥,请详细说明。

由于

1 个答案:

答案 0 :(得分:0)

映射器和简化器不是单独的机器,而是单独的代码。映射代码和归约代码都在集群中存在的同一组计算机上运行。


因此,在集群中的所有计算机都运行了映射器之后,结果是:

  1. 在节点上本地绑定(考虑为“本地分组”);并且,
  2. 在群集中的所有节点上随机/重新分布。

将步骤2视为“全局分组”,因为它是通过将属于一个键的所有值都分配到其分配的唯一节点的方式来完成的。

现在,节点在内存中的(键,值)对上运行Reducer代码。