轻松入门大数据 第4章 入门到进阶:系统玩转分布式计算框架MapReduce 4.1 Hadoop之MapReduce 4.1.36 本地预计算Combiner意义
轻松入门大数据
文章目录
- 轻松入门大数据
- 第4章 入门到进阶:系统玩转分布式计算框架MapReduce
- 4.1 Hadoop之MapReduce
- 4.1.36 本地预计算Combiner意义
第4章 入门到进阶:系统玩转分布式计算框架MapReduce
4.1 Hadoop之MapReduce
- 初识MapReduce
- MR优缺点
- MR核心思想
- 官方词频统计案例分析
- MR编程规范
- MR数据类型
- 词频统计分析详解
- 模板方法设计模式
- 序列化
- Hadoop序列化之Writable
- 自定义序列化案例实战
- 初识InputFormat&InputSplit
- InputSplit和Block的关系
- InputFormat系列编程
- Partitioner
- Combiner
- 排序
- 初识OutputFormat
- 自定义OutputFormat实战
- 场景题之group by
- 场景题之distinct
- 场景题之join
- Shuffle详解
- MR核心组件总结
4.1.36 本地预计算Combiner意义
看个场景
假设有四个Mapper, 以wc 词频统计为例
中间处理成这样了
现在只有两个Reducer,就成这样了,最后在Reducer 中计算出结果得到
这是我们的正常流程
以这个c 为例,前面两个要经过网络传输,后面三个也是要经过网络传输,能不能有一种机制【预聚合机制】,
即提前计算,因为我们要求wc 词频统计,在Mapper 端,处理完后,加上一个动作,这个动作做一个和我们的业务逻辑相同的操作,比如我们这里是要求出词频,在每个Mapper 结束时,加上一个求出这个word 出现的次数的操作(求和),
如果有(当然有) 这种操作,那么每一个Mapper 处理完后,就是下面这样的 。
到达Reducer 的时候,数据的样子就是下面这样的
比较一下
很明显,加上这个操作后,传输次数降低了,在大数据中,降低文件传输数量对作业性能也是很大的提升。
所以预聚合是分布式计算框架中非常常见的一个优化手段。
没错, MR 中有这个东西,它叫Combiner,它就是一个本地的Reducer 操作。
它和真正的Reducer 的区别:
- 真的Reducer 是在接收到所有Mapper 的结果之后进行处理
- Combiner:是在每个MapTask 上运行的
∴ Combiner 的意义:对每个MapTask 的输出做本地汇总,进而减少数据的网络传输量。
还没有评论,来说两句吧...