Hadoop性能模型(5)
整个shuffle阶段的消耗是:
3.2 Merge阶段模型
整个map输出拷贝到内存和(或)磁盘之后,排序合并阶段开始,该阶段将合并所有的数据到单个流,以便reducer,跟map合并阶段类似,该阶段也可以有多轮,但是最后合并之后,不建立输出文件,而是把数据发送给reducer。
shuffle阶段生成了磁盘上的合并或非合并shuffle文件,或者在内存中的分片。随后的合并分为三步。
第一步:一些分片也许从内存被合并到一个单个的shuffle文件,为了满足pReducerInBufPerc的内存限制(该参数指定了reducer之前的内存分片数量)。
只有磁盘上的shuffle文件数小于pSortFactor时,上面的合并才发生,假如不小于的话,则跟内存中的分片一起进行合并。
第二步:磁盘上的文件有可能经过多轮merge(类似于map任务处理,该步只有在numFilesOnDisk>0(即filesToMergeStep2>0)才会发生)。中间读入的数量是:
跟map任务不同的是合并文件的大小不同,可以计算: