Partition MapReduce
来源:互联网 发布:极端勤奋知乎 编辑:程序博客网 时间:2024/05/22 03:45
1.解析Partition
Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类。
Mapper的结果,可能送到Combiner做合并,Combiner在系统中并没有自己的基类,而是用Reducer作为Combiner的基类,他们对外的功能是一样的,只是使用的位置和使用时的上下文不太一样而已。Mapper最终处理的键值对<key, value>,是需要送到Reducer去合并的,合并的时候,有相同key的键/值对会送到同一个Reducer那。哪个key到哪个Reducer的分配过程,是由Partitioner规定的。它只有一个方法,
- getPartition(Text key, Text value, int numPartitions)
输入是Map的结果对<key, value>和Reducer的数目,输出则是分配的Reducer(整数编号)。就是指定Mappr输出的键值对到哪一个reducer上去。系统缺省的Partitioner是HashPartitioner,它以key的Hash值对Reducer的数目取模,得到对应的Reducer。这样保证如果有相同的key值,肯定被分配到同一个reducre上。如果有N个reducer,编号就为0,1,2,3……(N-1)。
Reducer是所有用户定制Reducer类的基类,和Mapper类似,它也有setup,reduce,cleanup和run方法,其中setup和cleanup含义和Mapper相同,reduce是真正合并Mapper结果的地方,它的输入是key和这个key对应的所有value的一个迭代器,同时还包括Reducer的上下文。系统中定义了两个非常简单的Reducer,IntSumReducer和LongSumReducer,分别用于对整形/长整型的value求和。
2、combiner
每一个map可能会产生大量的输出,combiner的作用就是在map端对输出先做一次合并,是一个特殊的reducer,减少map和reducer间的数据传输,提高网络IO性能。
combiner最基本是实现本地key的归并,combiner具有类似本地的reduce功能。
如果不用combiner,那么,所有的结果都是reduce完成,效率会相对低下。使用combiner,先完成的map会在本地聚合,提升速度。
【注意】:Combiner的输出是Reducer的输入,如果Combiner是可插拔的,添加Combiner绝不能改变最终的计算结果。所以Combiner只应该用于那种Reduce的输入key/value与输出key/value类型完全一致,且不影响最终结果的场景。比如累加,最大值等。【求平均值不适合】
- Partition MapReduce
- MapReduce: Partition
- Mapreduce-Partition分析
- Mapreduce-Partition分析
- Mapreduce-Partition分析
- Mapreduce-Partition分析
- Mapreduce-Partition分析
- mapreduce之partition分区
- Mapreduce-Partition分析
- mapreduce设置分区partition
- mapreduce的shuffle,partition,combine
- Hadoop mapreduce 中partition作用
- mapreduce的shuffle,partition,combine
- Hadoop之MapReduce-Partition编程
- mapreduce的shuffle,partition,combine
- mapreduce的shuffle,partition,combine
- 关于mapreduce 的 shuffle ,partition,combiner
- MapReduce优化实例(自定义Partition Combiner)
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- Android之——史上最简单图片轮播广告效果实现
- 有点感伤
- 浅谈sql中的in与not in,exists与not exists的区别
- Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理
- Partition MapReduce
- FLEX BOX (弹性魔盒) 完全指南
- hdu 3549 Flow Problem EK算法 网络流
- BP神经网络-详解
- 《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
- linux查看目录下占用空间最大的目录
- iOS随笔记-开发中遇到的#import头文件找不到的问题解决办法
- Struts(19)Struts集成
- 九度OJ 题目1131:合唱队形