【问题标题】:What does the shuffling phase actually do?洗牌阶段实际上做了什么?
【发布时间】:2017-11-05 04:21:16
【问题描述】:

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


可能性 - A

由于 shuffle 是将 mapper o/p 带到 reducer o/p 的过程,它只是根据 partitioner 中编写的代码将特定键从 mapper 带到特定的 reducer

例如。 mapper 1 的 o/p 是 {a,1} {b,1}

mapper 2的o/p是{a,1} {b,1}

在我的分区器中,我已经写了所有以'a'开头的键都将进入reducer 1,所有以'b'开头的键都将进入reducer 2,因此o/p将是:

减速器 1:{a,1}{a,1}

减速器 2:{b,1}{b,1}


可能性 - B

或者与上述过程一起,它是否也对键进行分组:

所以,o/p 是:

减速器 1:{a,[1,1]}

减速器 2:{b,[1,1]}


在我看来,我认为它应该是 A,因为键的分组必须在排序之后进行,因为排序只是为了让 reducer 可以轻松指出一个键结束而另一个键开始的时间。如果是,键分组实际发生在什么时候,请详细说明。

【问题讨论】:

    标签: hadoop mapreduce shuffle mapper reducers


    【解决方案1】:

    Mapper 和 Reducer 不是独立的机器,而是独立的代码。映射代码和归约代码都运行在集群中的同一台机器上。


    所以,集群中的所有机器都运行了mapper之后,结果是:

    1. 在节点上本地分箱(将其视为“本地分组”);并且,
    2. 在集群上的所有节点间重新分配/重新分配。

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

    现在,节点在其内存中的 (key, value) 对上运行 Reducer 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-02
      • 2020-11-21
      • 2015-02-26
      • 2017-06-29
      • 2013-06-13
      • 2021-10-25
      • 2011-08-12
      相关资源
      最近更新 更多