在Hadoop中,有一种处理过程叫Combiner,与Mapper和Reducer在处于同等地位,但其执行的时间介于Mapper和Reducer之间,其实就是Mapper和Reducer的中间处理过程,Mapper的输出是Combiner的输入,Combiner的输出是Reducer的输入。

例如获取历年的最高温度例子,以书中所说的1950年为例,在两个不同分区上的Mapper计算获得的结果分别如下:

第一个Mapper结果:(1950, [0, 10, 20])

第二个Mapper结果:(1950, [25, 15])

如果不考虑Combiner,按照正常思路,这两个Mapper的结果将直接输入到Reducer中处理,如下所示:

MaxTemperature:(1950, [0, 10, 20, 25, 15])

最终获取的结果是25。

如果考虑Combiner,按照正常思路,这两个Mapper的结果将分别输入到两个不同的Combiner中处理,获得的结果分别如下所示:

第一个Combiner结果:(1950, [20])

第二个Combiner结果:(1950, [25])

然后这两个Combiner的结果会输出到Reducer中处理,如下所示

MaxTemperature:(1950, [20, 25])

最终获取的结果是25。

由上可知:这两种方法的结果是一致的,使用Combiner最大的好处是节省网络传输的数据,这对于提高整体的效率是非常有帮助的。

但是,并非任何时候都可以使用Combiner处理机制,例如不是求历年的最高温度,而是求平均温度,则会有另一种结果。同样,过程如下,

如果不考虑Combiner,按照正常思路,这两个Mapper的结果将直接输入到Reducer中处理,如下所示:

AvgTemperature:(1950, [0, 10, 20, 25, 15])

最终获取的结果是14。

如果考虑Combiner,按照正常思路,这两个Mapper的结果将分别输入到两个不同的Combiner中处理,获得的结果分别如下所示:

第一个Combiner结果:(1950, [10])

第二个Combiner结果:(1950, [20])

然后这两个Combiner的结果会输出到Reducer中处理,如下所示

AvgTemperature:(1950, [10, 20])

最终获取的结果是15。

由上可知:这两种方法的结果是不一致的,所以在使用Combiner时,一定三思而后行,仔细思量其是否适合,否则可能造成不必要的麻烦。

转载于:https://www.cnblogs.com/baolebei/p/3836696.html

Hadoop学习之Combiner相关推荐

  1. [Hadoop] Hadoop学习历程 [持续更新中…]

    1. Hadoop FS Shell Hadoop之所以可以实现分布式计算,主要的原因之一是因为其背后的分布式文件系统(HDFS).所以,对于Hadoop的文件操作需要有一套全新的shell指令来完成 ...

  2. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

  3. Hadoop学习之MapReduce

    Hadoop学习之MapReduce 目录 Hadoop学习之MapReduce 1 MapReduce简介 1.1 什么是MapReduce 1.2 MapReduce的作用 1.3 MapRedu ...

  4. Hadoop学习之旅三:MapReduce

    MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...

  5. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  6. 我的hadoop学习之路

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上. Ha ...

  7. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  8. Hadoop学习笔记(1)

    原文:http://www.cnblogs.com/zjfstudio/p/3859704.html Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分 ...

  9. Hadoop学习笔记—18.Sqoop框架学习

    Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...

最新文章

  1. dom元素滚动条高度 js_DOM 事件与事件委托
  2. java httpclient访问webservice_java通过HttpClient方式和HttpURLConnection方式调用WebService接口...
  3. 泛型技巧系列:简单类型选择器
  4. oracle全文索引的简单配置
  5. mysql创建非聚集索引_一文看懂聚集索引和非聚集索引的区别
  6. 第20月第4天 pycharm utf-8
  7. 对Web设计和开发人员有用的15个Chrome插件
  8. 配置Struts2.0
  9. java日历类add方法_Java日历computeFields()方法及示例
  10. java 课程设计数据库_人事管理系统(java数据库课程设计)+SQL数据库
  11. 比特大陆裁员 85%,区块链行业彻底入深冬
  12. 微信小程序API之request
  13. Itextpdf5 基础知识
  14. 小技巧 - Chrome 浏览器绕过“请在微信客户端打开链接”
  15. oracle按顺序新增字段,Oracle 修改字段顺序的两种方法
  16. web onblur string
  17. PDO简介及其基本使用
  18. 电脑锁定计算机有没有难度较高的,你对电脑的刷新率了解有多少 锁定刷新率的方法...
  19. u盘里的文件不见了怎么办?怎么恢复数据?
  20. 微软培训和认证的建议

热门文章

  1. 系统架构师学习笔记-数据通信与计算机网络(二)
  2. zabbix php 安装,zabbix_Linux安装php5.6.31
  3. 计算机直线的绘制实验报告,dda画直线实验报告
  4. java.lang.math.abs_java.lang.StrictMath.abs(int a)方法实例
  5. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能
  6. java定时器参数_Java报表软件定时器参数之一
  7. 锐捷ap怎么设置_新房装修网络布线方案一:AC+AP模式,弱电箱只放光猫和集成AC...
  8. linux 终端与shell输出大小不匹配
  9. 计组之指令系统:3、CISC和RISC
  10. 【数据库题型大总结】应用题总结