Mapper过程中Combiner的作用
来源:互联网 发布:兰蔻气垫好不好知乎 编辑:程序博客网 时间:2024/05/01 21:29
我们可以带着下面问题来阅读
为什么需要在Mapper端进行归约处理?
为什么可以在Mapper端进行归约处理?
既然在Mapper端可以进行归约处理,为什么在Reducer端还要处理?
我们知道,MapReduce是分为Mapper任务和Reducer任务,Mapper任务的输出,通过网络传输到Reducer任务端,作为输入。
在Reducer任务中,通常做的事情是对数据进行归约处理。既然数据来源是Mapper任务的输出,那么是否可以在Mapper端对数据进行归约处理,业务逻辑与Reducer端做的完全相同。处理后的数据再传送到Reducer端,再做一次归约。这样的好处是减少了网络传输的数量。
回答第一个问题:因为在Mapper进行归约后,数据量变小了,这样再通过网络传输时,传输时间就变短了,减少了整个作业的运行时间。
回答第二个问题:因为Reducer端接收的数据就是来自于Mapper端。我们在Mapper进行归约处理,无非就是把归约操作提前到Mapper端做而已。
回答第三个问题:因为Mapper端的数据仅仅是本节点处理的数据,而Reducer端处理的数据是来自于多个Mapper任务的输出。因此在Mapper不能归约的数据,在Reducer端有可能归约处理。
在Mapper进行归约的类称为Combiner。那么,怎么写Combiner哪?非常简单,就是我们自定义的Reducer类。那么,怎么用哪?更简单,见图
看到上图的使用方法了吗,就是一行调用代码。
要注意的是,Combiner只在Mapper任务所在的节点运行,不会跨Mapper任务运行。Reduce端接收所有Mapper端的输出来作为输入。虽然两边的归约类是同一个,但是执行的位置完全不一样。
并不是所有的归约工作都可以使用Combiner来做。比如求平均值就不能使用Combiner。因为对于平均数的归约算法不能多次调用。
0 0
- Mapper过程中Combiner的作用
- Mapper过程中Combiner的作用
- MapReduce中Combiner的作用和用法
- 【MR】MapReduce中shuffle、partition、combiner的作用与关系
- mybatis 中mapper 的namespace作用
- hadoop1中partition和combiner作用
- Hadoop中Mapper过程的源码分析
- Hadoop中Combiner的使用
- Hadoop中Combiner的使用
- Hadoop中Combiner的使用
- Hadoop中Combiner的使用
- Mapreduce中Combiner的使用及误区
- Mapreduce中Combiner的使用及误区
- hadoop pipes模式中combiner的使用
- Mapreduce中Combiner的使用及误区
- Mapreduce中Combiner的使用及误区
- hadoop map reduce 中间的combiner的作用
- MapReduce中的combiner、partition和shuffle各自的作用是什么?
- 用.class文件创建对象
- 网站
- 至我最爱的人小梦
- 各地方政府为何要在此时集中放开限购令呢?7月中旬,上半年经济数据新鲜出炉
- javascript 正则匹配 提取全部 preg_match_all matchAll方法
- Mapper过程中Combiner的作用
- android的数据存储方式------5种
- java学习 第二章
- java.util.Date()类 用 @Temporal(TemporalType.TIME) 才能精确到时分秒!
- Hive学习笔记(一)
- Linux下.ko, .o, .so, .a, .la文件
- window7 下搭建java 开发环境
- 使用java对文件或文件夹进行压缩和加密
- BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课