节点管理器是否在每个DataNode内执行Map和Reduce阶段?

时间:2015-04-21 10:18:41

标签: hadoop mapreduce hdfs yarn

我理解资源管理器将MapReduce程序发送到每个节点管理器,以便在每个节点中执行MapReduce。

但是看到这张图片后,我对实际执行Map & Reduce jobs的位置以及数据节点之间的混乱情况感到困惑?

是否需要花时间对差异数据节点进行排序和填充/发送数据以执行Reduce Job?请解释一下。

另请告诉我此图中Map NodeReduce Node的内容。 Image Src:http://gppd-wiki.inf.ufrgs.br/index.php/MapReduce

enter image description here

1 个答案:

答案 0 :(得分:2)

输入拆分是存储在hdfs上的文件的逻辑块,默认情况下,输入拆分表示文件的块,其中文件的块可能存储在许多数据节点上。群集。

容器是资源管理器在任何数据节点上分配的任务执行模板,以便执行Map / Reduce任务。

首先, Map 任务由数据节点上的容器执行,资源管理器将容器分配到尽可能接近输入拆分的位置,方法是遵守机架感知策略(本地/机架本地/ DC本地)。

Reduce 任务将由任何数据节点上的任何随机容器执行,并且reducers通过Shuffle / Sort过程从每个映射器复制其相关数据。

映射器以结果在内部分区的方式准备结果,并且在每个分区内,记录按键排序,分区程序确定哪个reducer应该获取分区数据。

通过 Shuffle and Sort ,Reducers通过http从每个映射器输出复制其相关分区,最终每个reducer合并并对复制的分区进行排序,并在reduce()方法之前准备最后一个Sorted文件调用

下面的图片可能会给出更多的澄清。 [Imagesrc:http://www.ibm.com/developerworks/cloud/library/cl-openstack-deployhadoop/]

enter image description here