在Reducer阶段,跨节点的数据移动是否发生? MapReduce的

时间:2014-11-10 23:10:10

标签: hadoop mapreduce

这是一个概念性问题。当Mapper函数完成时,它会在Local节点上发出Intermediate Key值Pairs。如果假设Jobtracker选择reducer从不同的节点运行,那么跨节点进行数据移动吗?

如果是,请告知我们,只有在所有Mapper阶段完成后才会启动reduce阶段。或者,只要单个映射器完成,就会有任何后台进程运行,这会将数据移动/复制到Reducer节点吗?

如果这个问题愚蠢,我会忽略:(

1 个答案:

答案 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指定的并行地图输出中的数据。