热线电话:13121318867

登录
2020-06-27 阅读量: 3389
Hadoop MapReduce过程详解:切片、分区、合并、归并、shuffle

MapReduce的过程:就是从输入杂乱、无规则的数据,通过自定义规则,切片,分区,在经过合并,归并操作,最后让其按规则输出,写入磁盘的过程。

RM_shuffle过程.png

1.输入切片Split

输入切片(inputSpilt):在进入map之前,需要经过切片,在我们不设置切片的大小时候,有两种规则:

1)默认切片大小=BlockSize,hadoop1.X是64M,hadoop2.X是128M;

2)文件本身的大小;

也可以自定义设置分片的大小。

每一个Split切片分配给一个mapTask。

2.环形内存缓冲区Buffer

数据在经过Map处理过后,会形成一个key-value的键值对,它并不会被立刻写入磁盘,而是会进入内存---也是环形内存缓冲区,它其实本质是一个数组,一个下标从0开始,不断增加,当达到一定的阀值的时候,就像可以容纳100条数据,当达到80条的时候,就会溢出写入磁盘。

3.分区、合并Combiner

在经历过环形缓冲区的数据,在经过partition,会按照自定义的规则进行排序,按照key值经行分区,在把具有相同key的经过合并,产生新的key-value。

在这次小合并会用到Mapper中的Combiner,正是这Combiner才会使他们合并。

无Combiner:

image.png

有Combiner:

image.png

同一个prititioner数据必然shuffle到同一个Reduce,将合并后的数据发送到相应的Reduce,prititioner必定会与Reduce tack个数保持一致。

4.归并Marge

当MapTask完成任务达到总数的5%之后,就会执行ReduceTask任务,每个ReduceTask默认启动5个copy数据从MapTask任务节点分别copy属于自己的数据,在经行Combiner,最后经过Merge生成最终的文件。

5.shuffle:

Map方法之后,Reduce方法之前的数据处理过程称之为Shuffle。


57.2946
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子