Hadoop入门之Mapreduce流程Shuffle过程

昨天大概讲述了下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过程



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值