MapTask 类执行调度Map 方法的整体流程[包含input]:

未命名文件 (1).png

Map流程中的output源码

  1. // Map阶段的输出实体类[环形缓冲区, 设置比例进行分批次溢写到磁盘]
  2. output = NewOutputCollector()
  3. // 执行获取
  4. collector = org.apache.hadoop.mapred.MapTask#createSortingCollector
  5. // 拿到分区数
  6. partitions = jobContext.getNumReduceTasks();
  7. // 分区大于1, 获取分区器
  8. if (partitions > 1) {
  9. // 默认的分区器: HashPartitioner.class
  10. partitioner = (org.apache.hadoop.mapreduce.Partitioner<K,V>)
  11. ReflectionUtils.newInstance(jobContext.getPartitionerClass(), job);
  12. }