MapReduce的shuffle阶段


map端的shuffle:

每个maptask的数据会进入环形缓冲区中,(默认100M,溢出比是80%),数据在写入时,会进行分区,往数据中添加一个分区属性,当数据写入到80%时,会启动一个溢写的线程,把内容写到磁盘的指定目录下的新建的一个溢出写文件,写磁盘前要经过partition、sort、Combiner。等最后记录写完,合并全部溢出写文件为一个分区且排序的文件。

reduc端的shuffle:

可以分为复制阶段、排序阶段、reduce阶段.

复制阶段:map输出文件位于运行map任务的tasktracker的本地磁盘上,reduce通过http的方式获取输出文件的分区,tasktracker为分区文件运行reduce任务,只要有一个map任务完成,reduce任务就开始复制输出。

排序阶段:更恰当的说法是合并阶段,因为排序是在map端进行的。这个阶段将合并map输出,维持其顺序排序,循环进行。

reduce阶段:对已排序输出中的每个键调用reduce函数,此阶段的输出直接写到输出文件系统,一般为hdfs

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容