Hadoop

Hadoop,第1张

Hadoop

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

理解:

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

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

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存