Map方法之后,Reduce方法之前的数据处理过程称之为Shuffle。
理解:
1.Map方法得
2.溢出到磁盘前还有其他 *** 作,对每个分区进行快速排序,对key的索引排,按照字典顺序排。如果有Combiner函数,则可以进行分区合并,例:,合并变为,减小了数据量。再进行各分区归并排序,如果有Combiner函数,可以再进行分区合并
3.因为达到80%就溢出,因此可能有多次溢出,注意环形缓冲区(默认100M)包括数据和索引,对于128M数据,不止两次溢写,因为还有索引。
4.接下来的压缩使得数据量减小,效率提高。压缩后的数据写入磁盘,等待Reduce端拉取,并不是自己主动。
5.Reduce端从几个Map方法输出数据进行拉取(远程拷贝),先放入内存,如果内存不够溢出到磁盘。内存和磁盘中的数据一起进行归并排序,进入Reduce方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)