上图来自hadoop权威指南,但是看起来还是比较复杂的。总结起来(缓冲,排序,合并,拷贝,归并排序)
我们知道,mapreduce计算框架会将一个任务分割成若干个map,在reduce端进行合并输出,(一般情况,并不完全准确)从map端输出到输入到reduce端中这一系列动作称为shuffle流程。
(1)环形缓冲区
每个map任务产生输出时,都有一个环形缓冲区用于存储任务输出
阈值为80%(即100MB*0.8)这都是可以修改的
当达到阈值后,后台线程开始把内容溢出到磁盘(spill),每次达到阈值,都会新建一个spill file,map继续将数据写入环形缓冲区,如果缓冲区被写满,map会被阻塞
(2)写过程(spill)
一,
(