MapReduce中的Partitioner阶段和Shuffle&Sort阶段有什么区别?

时间:2019-04-12 15:17:23

标签: mapreduce

据我所知,在映射和归约之间存在组合(如果适用),然后是分区,然后是改组。

虽然看起来分区和随机排序是map / reduce中不同的阶段,但我无法区分它们的作用。

它们必须一起从许多映射器(或组合器)中获取键/值对,并将它们发送给化简器,所有共享相同键的值都被发送到同一化简器。但是我不知道两个阶段的每个阶段。

1 个答案:

答案 0 :(得分:1)

Partitioning是恰好在shuffle-sort子阶段之前执行的子阶段。但是为什么需要分区?

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

enter image description here

Hadoop必须知道每个映射器的所有 Ayush 记录必须发送到特定的reducer(否则该任务将返回错误的结果)。决定将哪个键发送到哪个分区,将哪个键发送到特定的reducer的过程就是分区过程。分区总数等于减速器总数。

混洗是将分区程序提供的中间数据移至reducer节点的过程。在此阶段中,存在分类和合并子阶段:

  

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

     

排序-从“合并”步骤获取输出并对所有内容进行排序   使用键的键值对。此步骤也返回   (Key, List[Value])输出,但具有排序的键/值对。

随机排序阶段的输出直接发送到减速器。