运行映射器的节点处理如何知道它必须将一些键值输出发送到节点A(运行reducer)&一些到节点B(运行另一个减速器)? 是否存在由JobTracker维护的reducer节点列表? 如果是,它如何选择节点来运行reducer?
答案 0 :(得分:5)
Mapper
并不真正知道将数据发送到何处,它主要关注两件事:
Reducer
。从那里,当Reducer
启动时,它将继续向作业跟踪器询问与其分区相对应的地图输出,直到它全部检索到它们为止。只要地图输出可用,reduce任务就会开始复制它,并在复制时逐渐合并。
如果仍然不清楚,我会建议查看the reference book on Hadoop,其中有一整章描述了这一部分,这里有一个从中提取的模式,可以帮助您看到在随机播放步骤中发生的事情:
答案 1 :(得分:1)
映射器不会将数据发送到reducer,而是reducer从成功执行map任务的任务跟踪器中提取数据。
作业跟踪器在将减速器任务分配给任务跟踪器时,知道成功的地图任务的运行位置,并可以编制任务跟踪器列表和地图尝试任务结果以进行拉取。