美文网首页
hadoop mapreducer Combiner 的执行

hadoop mapreducer Combiner 的执行

作者: 无来无去_A | 来源:发表于2020-05-05 20:43 被阅读0次

1. MapTask 溢写时执行

环形缓存区溢写时在快速排序之后溢写之前Combiner 如果不为空则先进行Combiner合并

源码位置

org.apache.hadoop.mapred.MapTask.MapOutputBuffer#sortAndSpill

if (combinerRunner ==null) {

}els{

}

2. 当前MapTask 所有溢写文件溢写完成后,进行溢写文件归并时可能发生Combiner 操作

源码位置

org.apache.hadoop.mapred.MapTask.MapOutputBuffer#mergeParts 

if (combinerRunner == null || numSpills < minSpillsForCombine) {

            Merger.writeFile(kvIter, writer, reporter, job);

          } else {

            combineCollector.setWriter(writer);

            combinerRunner.combine(kvIter, combineCollector);

          }

此时当 combiner不为空,并且溢写次数大于3时进行combiner 操作

相关文章

网友评论

      本文标题:hadoop mapreducer Combiner 的执行

      本文链接:https://www.haomeiwen.com/subject/apuvghtx.html