这是一个概念性问题。当Mapper函数完成时,它会在Local节点上发出Intermediate Key值Pairs。如果假设Jobtracker选择reducer从不同的节点运行,那么跨节点进行数据移动吗?
如果是,请告知我们,只有在所有Mapper阶段完成后才会启动reduce阶段。或者,只要单个映射器完成,就会有任何后台进程运行,这会将数据移动/复制到Reducer节点吗?
如果这个问题愚蠢,我会忽略:(
答案 0 :(得分:1)
如果假设Jobtracker选择reducer从不同的节点运行,那么跨节点进行数据移动吗?
是的,如果Reduce
任务在不同节点上运行,而不是跨节点发生数据移动。
在完成所有请让我知道,只有在所有Mapper阶段完成后才会启动reduce阶段。
Reduce
之前, Mapper
任务不会被初始化。但是map任务可能会在不同的时间完成,因此Reduce
任务会在每个映射完成后立即开始复制Mapper
的数据。这称为reduce任务的copy
阶段。一旦所有映射器完成处理并且所有数据在reducer端汇总后,reduce方法就会被初始化。
是否有任何后台进程在单个映射器完成后立即运行,这会将数据移动/复制到Reducer节点?
Mapper的中间数据由TaskTracker托管的内部jetty Web服务器提供,reduce任务包含一组线程,这些线程将复制mapred.reduce.parallel.copies
指定的并行地图输出中的数据。