1.Combiner
combiner阶段是程序员可以选择的,combiner其实也是一种reduce操作,因此我们看见WordCount类里是用reduce进行加载的。
Combiner是mapreduce的一种优化手段,每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能。
Combiner是mapreduce的一种优化手段,每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能。
在实际的Hadoop集群操作中,我们是由多台主机一起进行MapReduce的,
如果加入规约操作,每一台主机会在reduce之前进行一次对本机数据的规约,
然后在通过集群进行reduce操作,这样就会大大节省reduce的时间,
从而加快MapReduce的处理速度
如果加入规约操作,每一台主机会在reduce之前进行一次对本机数据的规约,
然后在通过集群进行reduce操作,这样就会大大节省reduce的时间,
从而加快MapReduce的处理速度
2.Partitionner
Map阶段总共五个过程:
step1.3就是partitioner过程。
key到reduce的分配过程,就是partitioner规定的。
根据业务需要,产生多个输出文件。
多个reduce任务并发运行,提高整体job的运行效率。
多个reduce任务并发运行,提高整体job的运行效率。
3.Shuffle
reduce分为三个过程:
step2.1就是shuffle过程。
针对多个map任务的输出按照不同的分区(Partition)通过网络复制到不同的reduce任务节点上,这个过程就称作为Shuffle。
4.排序分组
Step1.4第四步中需要对不同分区中的数据进行排序和分组,默认情况按照key进行排序和分组。
默认情况按照key进行排序,数字序,字典序。默认分组是将key值相同的合并到一起,将value值作为一个集合。
可以自定义封装一个新类型作为key值实现自定义排序或分组。