本节书摘来异步社区《Hadoop MapReduce实战手册》一书中的第1章,第1.4节,作者: 【美】Srinath Perera , Thilina Gunarathne 译者: 杨卓荦 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 给WordCount MapReduce程序增加combiner步骤

Hadoop MapReduce实战手册
运行map函数后,如果有许多键值对使用相同的键,那么Hadoop必须将所有这些值传送到reduce函数。这可能会产生一个非常显著的开销。为了优化这样的场景,Hadoop支持一个专门的函数——combiner。如果配置了combiner,Hadoop会在运行完成mapper之后、调用reducer之前,在map节点所在的那个节点调用combiner。这可以显著地减少传输到reduce步骤的数据量。

本节将说明如何在1.3节介绍的WordCount示例程序中使用combiner。

操作步骤
现在,让我们加入combiner配置来运行MapReduce作业。

1. combiner必须和reduce函数具有相同的接口。对于WordCount示例程序,我们将会复用
reduce函数作为combiner。

2. 为了让MapReduce作业使用combiner,需要在示例程序中取消//job.setCombinerClass.
(IntSumReducer.class);这行的注释,然后重新编译代码。

3. 将hadoop-cookbook-chapter1.jar文件复制到HADOOP_HOME目录,并且用前一节介绍的方式运行WordCount。确保运行作业之前删除了旧的输出目录。

4. 最终结果会放在output目录下。

工作原理
要激活combiner,用户应该提供mapper、reducer和combiner作为MapReduce作业的输入。在该环境中,一旦mapper函数执行完成,Hadoop就在mapper函数所在的节点上执行combiner。使用这种方法,combiner可以预先处理mapper所产生的数据,然后再将结果发送给reducer,从而减少转移的数据量。

例如,WordCount示例,combiner从map步骤接收多个(word, 1)对作为输入,并输出一个(word, N)对。例如,如果输入文档中单词“the”出现了10 000次,那么mapper将产生10 000个(the, 1)对,而combiner将只产生一个(the, 10,000),从而减少传输给reduce任务的数据量。

然而,combiner只适用于满足代数交换律和结合律的函数。例如,同样的思路对计算平均值就会无效。由于平均值是不满足交换律和结合律的,在这种情况下,combiner将会得到一个错误的结果。

更多参考
虽然在示例程序中,我们是复用reduce函数实现的combiner功能,你也可以写自己的combiner函数,就像我们在前一节中介绍的map和reduce函数。然而,combiner函数的签名必须与reduce函数的签名完全一致。

在本地配置Hadoop的情况下,使用combiner不会产生显著的收益。然而,如1.8节所述,在分布式的集群环境中,combiner可以提供显著的收益。

《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤相关推荐

  1. 《Hadoop MapReduce实战手册》一1.10 使用MapReduce监控UI

    本节书摘来异步社区<Hadoop MapReduce实战手册>一书中的第1章,第1.10节,作者: [美]Srinath Perera , Thilina Gunarathne 译者: 杨 ...

  2. 《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API

    本节书摘来异步社区<Hadoop MapReduce实战手册>一书中的第2章,第2.8节,作者: [美]Srinath Perera , Thilina Gunarathne 译者: 杨卓 ...

  3. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server

    本节书摘来异步社区<Hadoop实战手册>一书中的第1章,第1.6节,作者: [美]Jonathan R. Owens , Jon Lentz , Brian Femiano 译者: 傅杰 ...

  4. 阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf

    Spark大数据分析实战 1.Spark简介 初识Spark Sp ark生态系统BDAS Sp ark架构与运行逻辑 弹性分布式数据集 2.Spark开发与环境配置 Spark应用开发环境2置 使用 ...

  5. Hadoop项目实战-用户行为分析之应用概述(二)

    1.概述 本课程的视频教程地址:<项目整体概述> 本节给大家分享的主题如下图所示: 下面我开始为大家分享第二节的内容--<项目整体概述>,下面开始今天的分享内容. 2.内容 从 ...

  6. Hadoop详解手册.pdf

    1 HADOOP背景 1 什么是HADOOP 1. HADOOP是apache旗下的一套开源软件平台 2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 ...

  7. 小朱笔记之hadoop应用实战、源码分析-目录

    小朱笔记之hadoop应用实战.源码分析 1.1 背景目的 该笔记从宏观架构.安装配置.源码分析.使用案例四个方面剖析了Hadoop1.0.3,希望能对同学们提供帮助,赠人玫瑰,手留余香.能够把had ...

  8. Java 7并发编程实战手册

    2019独角兽企业重金招聘Python工程师标准>>> Java 7并发编程实战手册 本书是 Java 7 并发编程的实战指南,介绍了Java 7 并发API 中大部分重要而有用的机 ...

  9. Wireshark工具创建过滤器的方式ARP协议全面实战手册

    Wireshark工具创建过滤器的方式ARP协议全面实战手册 [实例1-3]现在要抓取目的或来源地址为192.168.5.9的封包.在图1.5中添加如下所示的条件: tcp dst port 3128 ...

最新文章

  1. 缺陷检测 | PCB AOI质量检测之自动定位核选取算法
  2. RESTful协议【软件架构】
  3. Thymeleaf 基本用法总结
  4. spring的aop准备工作-导包定义通知
  5. linux 配置path
  6. linux access
  7. mysql keeplevied_mysql keepalived
  8. makefile工作笔记0001---认识使用makefile
  9. 机器学习实战(九)K-means(K-均值)
  10. jpeg 转rgb c 语言_威刚推出SE770G移动固态硬盘 主打高速传输和RGB灯效
  11. SQL语言 --- 数据定义
  12. tp5设置session过期时间
  13. 数独程序求解世界最难数独——JAVA版
  14. 【Visual C 】游戏开发笔记三十五 站在巨人的肩膀上 游戏引擎导论
  15. html (第四本书第九章参考)
  16. 用python爬取了很多习题答案,mark一下
  17. Oracle 12c 中修改PDB数据库的日志归档模式
  18. 微信小程序上传照片,限制格式,限制大小,公用方法
  19. 局域网访问mysql失败_局域网中mysql连接失败
  20. 手机插了sd卡显示无服务器,手机sd卡无法读取之sd卡无文件系统或文件系统不受支持怎么办...

热门文章

  1. iframe 页面填充
  2. php同时上传多个数据,怎样一次上传多个数据流
  3. linux安装python_VTK:华为笔记本电脑+深度deepin-linux+python下安装和入门
  4. python发邮件11002_【python发送zabbix报警邮件,SSL版本】mailman.py
  5. python反转字符串的元音字母_345. 反转字符串中的元音字母-----leetcode刷题(python解题)...
  6. 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
  7. oracle表空间可以迁移,Oracle 表空间迁移
  8. java异常统一处理,Controller层的异常统一处理及返回
  9. mysql k,mysql事务有关概念-怀念K.Dures
  10. inotifywait监听php,利用inotifywait监控主机文件和目录