在我们编写程序时,hadoopmapreduce作业的排序在哪里完成?我发现在我的计划中前进有困难。
aemubtdh1#
排序由 Hadoop MapReduce 框架。Map器输出中间(键、值)对,这些对被传递给还原器。每个减速机按排序顺序获取所有键。插图:假设使用了两个Map器:
Hadoop MapReduce
-- 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个减速器:
Hadoop
--- 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]
1条答案
按热度按时间aemubtdh1#
排序由
Hadoop MapReduce
框架。Map器输出中间(键、值)对,这些对被传递给还原器。每个减速机按排序顺序获取所有键。插图:
假设使用了两个Map器:
排序和洗牌(步骤由
Hadoop
框架)将确保按排序键顺序将中间键传递给还原器。假设使用2个减速器:
如果要确保传递给reducer的键之间的全局排序,可以使用total order partitioner。在这种情况下,每个减速器将获得如下输入: