MapReduce Notes

 1、一个Map/Reduce 作业的输入和输出类型如下所示:

  MapReduce Notes-LMLPHP

 2、Shuffle & Sort & Secondary Sort

  Reducer的输入就是Mapper已经排好序的输出。在这个阶段,框架通过HTTP为每个Reducer获得所有Mapper输出中与之相关的分块。

  框架将按照key的值对Reducer的输入进行分组 (因为不同mapper的输出中可能会有相同的key)。Shuffle和Sort两个阶段是同时进行的;map的输出也是一边被取回一边被合并的。

  如果需要中间过程对key的分组规则和reduce前对key的分组规则不同,那么可以通过

JobConf.setOutputValueGroupingComparator(Class)来指定一个Comparator。再加上 JobConf.setOutputKeyComparatorClass(Class)可用于控制中间过程的key如何被分组,所以结合两者可以实现按值的二次排序

 3、combiner的输入输出类型必须和mapper的输出以及reducer的输入类型一致。

 4、Shuffle全过程:

  参考:http://langyu.iteye.com/blog/992916

05-28 03:56