在mapreduce作业中排序在哪里完成?

vddsk6oq  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(250)

在我们编写程序时,hadoopmapreduce作业的排序在哪里完成?我发现在我的计划中前进有困难。

aemubtdh

aemubtdh1#

排序由 Hadoop MapReduce 框架。Map器输出中间(键、值)对,这些对被传递给还原器。每个减速机按排序顺序获取所有键。
插图:
假设使用了两个Map器:

-- 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]

如果要确保传递给reducer的键之间的全局排序,可以使用total order partitioner。在这种情况下,每个减速器将获得如下输入:

-- 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]

相关问题