Reduce 大致分为 copy、sort、reduce 三个阶段,重点在前两个阶段。copy 阶段包含一 个 eventFetcher 来获取已完成的 map 列表,由 Fetcher 线程去 copy 数据,在此过程中 会启动两个 merge 线程,分别为 inMemoryMerger 和 onDiskMerger,分别将内存中的 数据 merge 到磁盘和将磁盘中的数据进行 merge。待数据 copy 完成之后,copy 阶段就 完成了,开始进行 sort 阶段,sort 阶段主要是执行 finalMerge 操作,纯粹的 sort 阶段, 完成之后就是 reduce 阶段,调用用户定义的 reduce 函数进行处理
详细步骤