- Map方法之后,Reduce方法之前这段处理过程叫shuffle
- Map方法之后,数据首先进入分区方法,把数据标记好分区,然后通过Context.write(k,v)将数据写入环形缓冲区。
环形缓冲区大小100m,当写入的数据量达到环形缓冲区的80%
时,进行溢写。溢写前对数据进行分区内,按key的索引进行字典顺序排序
。排序的方法为快速排序。溢写产生大量溢写文件,对溢写文件进行归并排序。对溢写文件也可以进行Combiner操作,前提是汇总操作,求平均值不行
。最后将文件按照分区存储到磁盘,等待Reduce端拉取。 - 每个Reduce拉取Map端对应分区的数据,拉取数据首先拉取到内存,内存不够了再存储到磁盘。拉取完所有数据后,采用归并排序将内存和磁盘中的数据都进行排序。在进行入Reduce方法之前,对数据进行分组。
10-29
385
01-17
536