Mapreduce中reduce任务的运行机制

从前面文章讲解,了解hadoop2.0当中Mapreduce是如何运行的,知道MRAppMaster通过调用yarn节点管理器启动一个节点容器来运行Map任务和reduce任务。上一篇讲解了具体Map任务节点当中Map任务的详细运行过程,接下来讲解一下reduce任务的详细运行过程。如下图:

Mapreduce中reduce任务的运行机制

Copy 阶段:

当Map任务完成后会在各个Map任务节点上重新生成key/value的键值对数据,所以reduce任务根据分区从maptask节点上copy数据到要执行该分区的reduce计算的节点上。复制数据的过程是先放到内存当中,当内存的数据大小超过一定的阀值时,会溢写到磁盘上。

Merge 阶段

在进行COPY阶段的同时,可以对同一个分区内的数据进行合并,同时对内存当中的数据进行合并、也对磁盘上的数据进行合并。

Sort 阶段

Mapreduce中对于reduce函数的输入是按照KEY进行排序聚集的一组数据。所以在调用reduce函数之前,需要对所有的数据再进行一次归并排序。

reduce阶段

在每个节点当中对归并排序好的分区数据进行reduce函数的计算,然后将计算结果写到HDFS上。这里reduce函数是用户编写的代码处理程序