Hadoop学习之MapReduce运行流程

来源:互联网 发布:win10手写笔记本软件 编辑:程序博客网 时间:2024/05/17 15:19

MapReduce运行流程:


1)MR程序启动后,会先启动MRAppMaster,MRAppMaster会根据job的信息计算需要的maptask数量,向集群申请资源,启动maptask进程;

2)maptask启动后,根据指定的数据切片(逻辑切片)进行数据处理:

a.根据指定的InputFormat获取RecordReader,读取数据,解析成kv对;

b.将kv对传递给用户定义的map方法,做数据处理,映射成另外的kv对形式,并存放在一个环形缓冲区中,默认100M;

c.环形缓冲区中数据达到一定阈值后会不断溢出到磁盘,溢出的过程中,会进行shuffle处理:

1.partitioner进行分区(默认分区方法为:对key进行哈希然后模除reducer个数);

2.根据key排序(快速排序);

3.combiner根据key进行局部合并。

d.将溢出的小文件合并成一个大文件,并进行shuffle处理,此时的排序算法为归并排序。

3)MRAppMaster监测到一定数量的maptask任务完成后,根据用户指定的参数启动相应数量的reducetask进程,并告知reducetask要处理的分区范围;

4)reducetask启动后会根据MRAppMaster告知的待处理数据所在位置,根据自己的分区号,从maptask端fetch自己分区号的数据,并进行合并(归并排序),此时所有的shuffle过程就结束了。然后reducetask会根据key进行分组,调用reduce()方法进行数据处理,收集运算结果kv,调用用户定义的outputformat将结果输出到外部存储。


原创粉丝点击