2021年大数据Hadoop(二十一):MapReuce的Combineer

Posted Lansonli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年大数据Hadoop(二十一):MapReuce的Combineer相关的知识,希望对你有一定的参考价值。

全网最详细的Hadoop文章系列,强烈建议收藏加关注!

后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。

目录

本系列历史文章

前言

MapReuce的Combineer

概念

实现步骤


本系列历史文章

2021年大数据Hadoop(二十):MapReduce的排序和序列化

2021年大数据Hadoop(十九):​​​​​​​MapReduce分区​​​​​​​

2021年大数据Hadoop(十八):MapReduce程序运行模式和深入解析

2021年大数据Hadoop(十七):MapReduce编程规范及示例编写

2021年大数据Hadoop(十六):MapReduce计算模型介绍

2021年大数据Hadoop(十五):Hadoop的联邦机制 Federation

2021年大数据Hadoop(十四):HDFS的高可用机制

2021年大数据Hadoop(十三):HDFS意想不到的其他功能

2021年大数据Hadoop(十二):HDFS的API操作

2021年大数据Hadoop(十一):HDFS的元数据辅助管理

2021年大数据Hadoop(十):HDFS的数据读写流程

2021年大数据Hadoop(九):HDFS的高级使用命令

2021年大数据Hadoop(八):HDFS的Shell命令行使用

2021年大数据Hadoop(七):HDFS分布式文件系统简介

2021年大数据Hadoop(六):全网最详细的Hadoop集群搭建

2021年大数据Hadoop(五):Hadoop架构

2021年大数据Hadoop(四):Hadoop发行版公司

2021年大数据Hadoop(三):Hadoop国内外应用

2021年大数据Hadoop(二):Hadoop发展简史和特性优点

2021年大数据Hadoop(一):Hadoop介绍

 

前言

 2021年全网最详细的大数据笔记,轻松带你从入门到精通,该栏目每天更新,汇总知识分享

 

​​​​​​​MapReuce的Combineer

 

概念

每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 map 和 reduce 节点之间的数据传输量,以提高网络IO 性能,是 MapReduce 的一种优化手段之一

1、combiner 是 MR 程序中 Mapper 和 Reducer 之外的一种组件

2、combiner 组件的父类就是 Reducer

3、combiner 和 reducer 的区别在于运行的位置

  • Combiner 是在每一个 maptask 所在的节点运行
  • Reducer 是接收全局所有 Mapper 的输出结果

4、combiner 的意义就是对每一个 maptask 的输出进行局部汇总,以减小网络传输量

 

​​​​​​​实现步骤

在这里以单词统计为例,实现Combiner

1、自定义一个 combiner 继承 Reducer,重写 reduce 方法

public class MyCombiner extends Reducer<Text,LongWritable,Text,LongWritable> {

     /*

       key : hello

       values: <1,1,1,1>

     */

    @Override

    protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {

        long count = 0;

        //1:遍历集合,将集合中的数字相加,得到 V3

        for (LongWritable value : values) {

            count += value.get();

        }

        //2:将K3和V3写入上下文中

        context.write(key, new LongWritable(count));

    }

}

 

2、在 job 中设置 job.setCombinerClass(CustomCombiner.class)

job.setCombinerClass(MyCombiner.class);

combiner 能够应用的前提是不能影响最终的业务逻辑,而且,combiner 的输出 kv 应该跟 reducer 的输入 kv 类型要对应起来

3、对使用Combiner之前和之后的日志进行对比

通过对比发现,使用Combiner之后,Reduce输入的键值对数量降低了,提供了网络传输效率。

以上是关于2021年大数据Hadoop(二十一):MapReuce的Combineer的主要内容,如果未能解决你的问题,请参考以下文章

2021年大数据ELK(二十一):Logstash简介和安装

2021年大数据Hadoop(二十五):YARN通俗介绍和基本架构

2021年大数据Hadoop(二十六):Yarn三大组件介绍

2021年大数据Hadoop(二十四):MapReduce高阶训练

2021年大数据Hadoop(二十三):MapReduce的运行机制详解

2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach