【问题标题】:How reduce phase works after map phase in hadoop在hadoop中的map阶段之后reduce阶段如何工作
【发布时间】:2017-08-16 22:28:34
【问题描述】:

我正在阅读过去几周的 hadoop 框架,但我无法理解一个概念。可能这个问题是愚蠢的,如果它对此感到抱歉的话。 我的问题是假设我必须在一个太长的文件上创建一个字数统计程序,因此它分布在 3 个不同的数据节点上。现在,由于在所有三个数据节点上运行的映射阶段将创建为键值对,然后合并将对所有三个数据节点创建的所有映射数据执行。但现在我无法理解下一阶段是什么。表示合并数据将如何沿着不同的缩减阶段分布,以及将运行多少个缩减阶段以及将运行多少个数据节点。请清除我以上所有的困惑,因为我无法在 hadoop 中进一步移动。 如果是这样,对不起一个愚蠢的问题。 谢谢

【问题讨论】:

  • 每个节点在自己的数据上运行reduce(第一阶段),然后一些节点在第一阶段的结果上运行reduce
  • 您能否详细说明您的答案。我无法理解什么是第一阶段,什么是第二阶段
  • 第一阶段是减少每个数据节点自己拥有的数据。然后第二阶段是从第一阶段收集归约数据,并将其合并在一起(有时可以通过对结果运行相同的归约操作来表示)。

标签: java hadoop mapreduce hdfs


【解决方案1】:
  1. 每个映射任务在处理其输入份额后,根据映射输出键类实例的compateTo() 方法实现对数据进行排序和合并。 (例如,有不同的树组产生 A、B 和 C)。
  2. 当处理到达确定阶段时,每个reduce任务,根据map任务产生的中间数据,只传输它感兴趣的文件(考虑到它现在只对A组感兴趣,它只会从实际产生这些类别文件的所有机器中传输属于组 A 的文件。
  3. reducer 对之前从执行映射任务的机器(即您有文件 A.1、A.2 和 A.3,但由于每个映射任务)传输的聚合数据执行自己的排序和合并是独立的排序顺序,聚合数据不能保证,所以排序现在应用于聚合的文件组)
  4. reduce 任务然后执行所需的处理并将结果写入最终位置。
  5. 对每个结果组重复该操作。

【讨论】:

    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 2017-02-22
    • 2015-04-08
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多