【问题标题】:Where sorting is done in MapReduce Job?MapReduce Job 中的排序在哪里进行?
【发布时间】:2018-05-25 07:21:30
【问题描述】:

当我们编写程序时,Hadoop Mapreduce Jobs 中的排序在哪里进行?我发现在我的计划中前进有困难。

【问题讨论】:

  • 排序和洗牌是reducer的一部分。你到底想问什么?

标签: hadoop mapreduce bigdata hadoop2


【解决方案1】:

排序由Hadoop MapReduce 框架完成。映射器输出传递给减速器的中间(键,值)对。每个 reducer 都按排序顺序获取所有键。

插图

假设使用了 2 个映射器:

-- mapper1 output
key_a, value_a1
key_b, value_b2
key_c, value_c1
key_d, value_d2

-- mapper2 output
key_a, value_a2
key_b, value_b1
key_d, value_d1
key_d, value_d3

排序和洗牌(Hadoop 框架完成的步骤)将确保中间键按排序键顺序传递给减速器。

假设使用了 2 个减速器:

--- reducer1 input (sorted by keys)
key_a, [value_a1, value_a2]
key_d, [value_d2, value_d1, value_d3]

--- reducer2 input (sorted by keys)
key_b, [value_b2, value_b1]
key_c, [value_c1]

如果您想确保传递给减速器的键之间的全局排序,您可以使用Total Order Partitioner。在这种情况下,每个 reducer 都会得到如下输入:

-- reducer1 input (sorted by keys - global)
key_a, [value_a1, value_a2]
key_b, [value_b2, value_b1]

-- reducer2 input (sorted by keys - global)
key_c, [value_c1]
key_d, [value_d2, value_d1, value_d3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多