重新运行Hadoop作业,分区的mapoutput是否会转到相同的Reducers?

时间:2011-11-16 14:25:21

标签: java hadoop mapreduce

在hadoop中,假设节点数是固定的(运行期间没有服务器崩溃),如果我使用相同的分区器(例如,映射输出的键上的散列分区)来分区映射器输出,并且我执行作业读取相同的数据集两次。是否确保具有相同密钥的数据将转到相同的减速器?感谢

例如,我的mapoutput包含两行: 钥匙|值

A |什么

B |任何

假设我有两个减速机1和2。 在第一次运行中,“A | anything”行进入reducer 1,“B | anything”进入reducer2。 如果我再次运行,是否有可能“A | anything”进入reducer 2,而“B | anything”进入reducer1?

谢谢!

1 个答案:

答案 0 :(得分:2)

map / reduce任务与节点之间没有任何关联。当map / reduce任务运行时,调度程序会选择一个可用的空闲map / reduce插槽(它可能/可能不是上次运行的同一台机器)来运行任务。因此,当重新运行Job时,相同的键可能由不同的reducer处理。这就是Hadoop框架容错的原因。