Hadoop_MapReduce_Shuffle机制

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

理解:

1.Map方法得<k,v>数据,进行分区标记后存入环形缓冲区,图中环形缓冲区左边箭头是索引写入,右边箭头是数据写入,当环形缓冲区的容量达到80%时开启一个后台线程将内容溢出(spill)到磁盘,map输出继续写到缓冲区。80%后反向是从索引方向和数据方向最后写入位置的20%中间为起点,反向写索引和数据。如果到100%,要等溢写结束才能写数据,到80%的话可以一边写入环形缓冲区,一边溢出写入磁盘。

2.溢出到磁盘前还有其他操作,对每个分区进行快速排序,对key的索引排,按照字典顺序排。如果有Combiner函数,则可以进行分区合并,例:<at,1>,<at,1>合并变为<at,2>,减小了数据量。再进行各分区归并排序,如果有Combiner函数,可以再进行分区合并

3.因为达到80%就溢出,因此可能有多次溢出,注意环形缓冲区(默认100M)包括数据和索引,对于128M数据,不止两次溢写,因为还有索引。

4.接下来的压缩使得数据量减小,效率提高。压缩后的数据写入磁盘,等待Reduce端拉取,并不是自己主动。

5.Reduce端从几个Map方法输出数据进行拉取(远程拷贝),先放入内存,如果内存不够溢出到磁盘。内存和磁盘中的数据一起进行归并排序,进入Reduce方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值