您的位置:首页 > 运维架构

Hadoop入门之Mapreduce流程Shuffle过程

2017-08-25 19:14 666 查看
昨天大概讲述了下MR的大概流程(分片,Mapper,Reducer),其中mapper和reducer中间的衔接过程shuffle没有谈到,这次主要总结下这个过程.



1.maptask通过inputformat(可以自定义实现类)读取要处理的文件交给你写的mapper过程处理后到outputcollector进行一些列的操作后写入到HDFS中(操作如下)

2.将要写出的数据先写入到内存缓存区,通过指针来控制内存写出数据的量,在缓冲区内的数据可以进行一些列的处理操作 
   (1)拿到一堆数据后先用partition(可以自定义)进行分区操作,判断该key属于那个区,方便以后reducer来获取数据.
   (2)分区后,对该区的数据进行排序比较后的排序操作(快排).
   (3)如果有需要还可以再次操作后再次定义combiner过程,对数据进行归并操作,节省存储空间(其实就是继承的reducer)

3.根据文件大小,缓存区大小,可能会写入磁盘很多中间文件,这里接着进行merge操作,每次读取分区内部分文件,进行归并排序后最终一个maptask会将输出合并为一个各个分区内有序的文件



4.maptask结束后,MRAppMaster会根据设置启动相应的ReducerTask,根据分配的信息去拉取各个maptask中的分区文件到本地

5.获取到该分区的文件后,如上图有两个maptask那么在0分区上reducertask就会拉取到两份文件,这个过程和maptask文件合并过程很像,将两个文件分别缓慢读取进行归并排序后最后输出一个有序序列,提供给reduce过程使用,

6.reduce过程通过groupingcomparaor(可自定义)类来判断前后两个数据是否是同一个数据,进而判断一次该取多少数据给reduce过程处理

7.reduce处理后分别将结果写入到指定的目录下.结果MR过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop Mapreduce Shuffle