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

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

1.输入分片---分片

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

2.环形内存缓冲区

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

3.分区,合并

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

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

无Combiner:

有Combiner:

 

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

4.归并

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

5,shuffle过程结束

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值