在hadoop中,假设节点数量是固定的(运行期间没有服务器崩溃),如果我使用相同的分区器(例如,在map输出的键上进行哈希分区)对mapper输出进行分区,并且我执行作业读取相同的数据集两次。是否确定具有相同键的数据将转到相同的减速器?由于
例如,my mapoutput由两行组成:Key | value
A | anything
B | anything
假设我有两个减速器1和2。在第一次运行中,行"A|anything"到减速器1,而"B|anything"到减速器2。如果我再次运行,是否有可能"A|anything"转到减速机2,而"B|anything"转到减速机1?
谢谢!
map/reduce任务与节点之间没有亲缘关系。当map/reduce任务即将运行时,调度器会选择一个可用的空闲map/reduce插槽(它可能是/也可能不是与前一次运行相同的机器)来运行该任务。因此,当Job重新运行时,相同的键可能由不同的reducer处理。