您的当前位置:首页正文

关于Hadoop中MapReduce的执行过程详解

来源:九壹网

Map阶段 

第一阶段:

把文件进行逻辑切片(确定分成几份)。

默认 切片大小 等于 Block大小(128M),每个切片都由一个Map处理,如果不满128也算作一个切片交由Map处理。(默认切片类:getSplits)

===============================Maptask===================================

第二阶段:

读取切片中的数据并返回<key,value>对。

默认是按行读取数据,每读一行就封装程一个<key,value>的键值对(默认读数据类:TextInputFormat)

一行数据传给map方法处理数据(切割

每读取解析出来一个<key,value>,调用一次map方法。

第三阶段:

(正常来说此时应该写入磁盘当中但是会性能低下,所以设置一个内存缓冲区叫做Memory Buffer,先写到缓冲区,到达一定的比例再写到磁盘叫做溢出

Map输出数据写入内存缓冲区,满了以后溢出变成一个临时文件,继续写继续溢出又变成一个文件,就是下面三个小块。溢出的时候根据key进行排序sort。(根据key字典序排序)。

partions是分区:存储区域或任务划分为多个独立的部分或子区域的过程。

第四阶段:

对所有溢出的文件进行merge合并,成为一个文件。

Reduce阶段

==============================ReduceTask=================================

第一阶段:ReduceTask会主动从MapTask复制拉取需要自己处理的数据。

第二阶段:把拉取来的数据,全部进行合并merge,再对合并后的数据排序

第三阶段:对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法。最后把这些键值对写到HDFS文件中。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top