MapReduce的基础介绍---分片,分区,合并,归并>>shuffle过程

MapReduce的shuffle过程:这个过程就是输入一个杂乱,毫无规则的数据。在经过MapReduce通过自定义一些规则,分片,分区,在经过合并,归并的操作,最后让其按照这个规则输出来,写入磁盘。

MapReduce的基础介绍---分片,分区,合并,归并>>shuffle过程

1.输入分片---分片

输入分片(inputSpilt):在进入map之前,需要经过分片,在我们不设置分片的大小时候,有两种规则,一种就是block充满数据,就是分片的大小一个block的大小,hadoop.1是64M,hadoop2.X之后是128M,第二种就是不满block的大小,就是文件本身的大小。当然也是可以自己设置分片的大小的。最后分配给一个map。

2.环形内存缓冲区

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

3.分区(partition),合并

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

MapReduce的基础介绍---分片,分区,合并,归并>>shuffle过程

partition最后会将自己reduce能处理的分区发送给自己的reduce,将处理不了的发送给其他reduce处理,这也就是reduce能引入别的map的分区。

4.归并

将所有Map的分区拿取过来,最后,进行归并形成最后的大文件,写入磁盘。