【问题标题】:Do Data Movement across the nodes happens during the Reducer Phase? MapReduce跨节点的数据移动是否发生在 Reducer 阶段? MapReduce
【发布时间】:2014-11-10 23:10:09
【问题描述】:

这是一个概念问题。当 Mapper Functions 完成时,它会在本地节点上发出中间键值对。如果假设 Jobtracker 选择 reducer 从不同节点运行,数据移动是否跨节点发生?

如果是,请让我知道只有在所有 Mapper 阶段完成后,reduce 阶段才会开始。或者是否会有任何后台进程在单个映射器完成后立即运行,将数据移动/复制到 Reducer 节点?

如果这个问题很傻,请忽略:(

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    如果假设 Jobtracker 选择 reducer 从不同节点运行,数据移动是否跨节点发生?

    是的,如果 Reducetask 运行在不同的节点上,那么数据移动发生在节点之间。

    请让我知道只有在所有 Mapper 阶段完成后,reduce 阶段才会开始。

    Reduce 任务在所有Mapper 完成之前不会被初始化。但是map任务可能在不同的时间完成,所以Reduce任务在每个map完成后就开始复制Mapper的数据。这被称为reduce任务的copy阶段。一旦所有的映射器都完成了处理并且所有的数据都在reducer端聚合了,那么reduce方法就会被初始化。

    是否会有任何后台进程在单个映射器完成后立即运行,将数据移动/复制到 Reducer 节点?

    Mapper 的中间数据由 TaskTracker 托管的内部 jetty Web 服务器提供服务,reduce 任务具有一组线程,这些线程将从 mapred.reduce.parallel.copies 指定的并行映射输出中复制数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2014-09-06
      • 2021-09-18
      相关资源
      最近更新 更多