MapReduce工作流程

MapReduce工作流程

MapReduce工作流程

Map阶段:

1.首先由客户端把数据进行切片处理,然后提交切片信息给ResourceManager。

2.ResourceManager找到一个NodeManager,由NodeManager创建分析出Maptask数量

3.每个输入分片由一个Maptask任务来处理。由RecorderReader以KV键值对的形式读取数据并传递给Mapper,读取一行,传递一行。

4.环形缓冲区:Mapper处理完成之后输出数据,首先会放在环形缓冲区中(outputCollector),当 缓冲区中的数据到 80%时,会把数据写到本地磁盘中,所以一个分区的数据可能会存在多个文件中。在写入磁盘前,首先根据业务逻辑的设定将数据划分为相应数目的分区,一个分区对应一个reduce,并且把数据 K 按字典顺序进行排序(区内有序)

5.归并排序:把属于一个分区中的数据合在一起再次进行排序(归并排序),但只是排序并没有把V

值合并

6.Combiner合并:由于一个分区中可能存在非常多的键值对,数据量非常大,为了减少map任务

和reduce任务之间的大量的数据传输,在mapper阶段对一个分区内的数据的V值进行合并,计算

出V的最大值,把这对最终算出的键值对传递给Reduce。

 

Reduce阶段:

接受各个节点Mapper传递过来的键值对,一个redure负责一个分区,相同K值为一组,调用一次

reduce,把V值相加,求出最终结果

posted @ 2021-06-16 10:19  会飞的鹅  阅读(1144)  评论(0)    收藏  举报