分割阶段和洗牌阶段有什么区别;MapReduce中的排序阶段?

分割阶段和洗牌阶段有什么区别;MapReduce中的排序阶段?,mapreduce,Mapreduce,据我所知,在映射和缩减之间有组合(如果适用的话),然后是分区,然后是洗牌 虽然分区和shuffle&sort在map/reduce中似乎是不同的阶段,但我无法区分它们的角色 它们必须一起从多个映射器(或组合器)获取键/值对,并将它们发送到还原器,共享同一键的所有值都将发送到同一个还原器。但我不知道这两个阶段都做了什么。是在子阶段之前执行的子阶段。但是为什么需要分区呢 每个reducer从几个不同的映射器获取数据。看这张照片(找到了): Hadoop必须知道来自每个映射器的所有Ayush记录都必

据我所知,在映射和缩减之间有组合(如果适用的话),然后是分区,然后是洗牌

虽然分区和shuffle&sort在map/reduce中似乎是不同的阶段,但我无法区分它们的角色

它们必须一起从多个映射器(或组合器)获取键/值对,并将它们发送到还原器,共享同一键的所有值都将发送到同一个还原器。但我不知道这两个阶段都做了什么。

是在子阶段之前执行的子阶段。但是为什么需要分区呢

每个reducer从几个不同的映射器获取数据。看这张照片(找到了):

Hadoop必须知道来自每个映射器的所有Ayush记录都必须发送到特定的reducer(否则任务将返回不正确的结果)。当它决定哪个键将被发送到哪个分区,哪个键将被发送到特定的reducer时,这个过程就是分区过程。分区的总数等于还原器的总数

洗牌是将分区器提供的中间数据移动到reducer节点的过程。在此阶段,有排序和合并子阶段:

合并-合并所有具有 相同的键并返回>

排序-从合并步骤获取输出并对所有 通过使用键来创建键值对。此步骤也将返回
(键,列表[值])
输出,但带有已排序的键值对

洗牌排序阶段的输出直接发送到减缩器