第2节 mapreduce深入学习:7、MapReduce的规约过程combiner

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

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

?   combiner 组件的父类就是 Reducer

?   combiner 和 reducer 的区别在于运行的位置:

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

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

?   具体实现步骤:

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

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

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

代码:

SortMain:添加如下代码
//设置第五步:规约job.setCombinerClass(SortCombiner.class);
SortCombiner:
package cn.itcast.demo2.sort;

import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;/** * 注意自定义combiner的话,输入类型和输出类型,都是key2  value2 * 作用:减少输出到reduce的key2的个数 */public class SortCombiner extends Reducer<PairSort,Text,PairSort,Text> {    @Override    protected void reduce(PairSort key, Iterable<Text> values, Context context) throws IOException, InterruptedException {        //这里面写规约的逻辑        for (Text value:values){            context.write(key,value);        }    }}

原文地址:https://www.cnblogs.com/mediocreWorld/p/11025441.html

时间: 2024-11-08 03:06:15

第2节 mapreduce深入学习:7、MapReduce的规约过程combiner的相关文章

Hadoop学习(五)-MapReduce架构原理

概述 hadoop主要是用于应对海量数据的存储和计算的,前面hdfs文件系统,则重点是用于海量数据的存储.那么有了这么多数据,我们又该怎么在这些数据里面来提取我们需要的信息呢?这个时候hadoop中出现了一个非常重要的成员MapReduce.MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.注意这个并行运算,它不再是我们传统意义上的串行计算,它可以在不同的进程中进行并行的运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思

Hadoop MapReduce编程学习

一直在搞spark,也没时间弄hadoop,不过Hadoop基本的编程我觉得我还是要会吧,看到一篇不错的文章,不过应该应用于hadoop2.0以前,因为代码中有  conf.set("mapred.job.tracker", "192.168.1.2:9001");新框架中已改为 Yarn-site.xml 中的 resouceManager 及 nodeManager 具体配置项,新框架中历史 job 的查询已从 Job tracker 剥离,归入单独的mapre

大数据学习之MapReduce基础与Yarn集群安装09

1大数据解决的问题? 海量数据的存储:hadoop->分布式文件系统HDFS 海量数据的计算:hadoop->分布式计算框架MapReduce 2什么是MapReduce? 分布式程序的编程框架,java->ssh ssm ,目的:简化开发! 是基于hadoop的数据分析应用的核心框架. mapreduce的功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发的运行在hadoop集群上. 3 MapReduce的优缺点 优点: (1)易于编程 (2)良好的拓

Migrating from MapReduce 1 (MRv1) to MapReduce 2 (MRv2, YARN)...

This is a guide to migrating from Apache MapReduce 1 (MRv1) to the Next Generation MapReduce (MRv2 or YARN). See the following sections for more information: Introduction Terminology and Architecture For MapReduce Programmers: Writing and Running Job

Mapreduce 工作机制图,MapReduce组合式,迭代式,链式

Mapreduce 工作机制图: 图中1:表示待处理数据,比如日志,比如单词计数图中2:表示map阶段,对他们split,然后送到不同分区图中3:表示reduce阶段,对这些数据整合处理.图中4:表示二次mapreduce,这个是mapreduce的链式 MapReduce组合式,迭代式,链式 问题导读: 1.比如我们输出的mapreduce结果,需要进入下一个mapreduce,该怎么解决?可以使用迭代式2.那么什么是迭代式?3.什么是依赖式?4.什么是链式?5.三种模式各自的应用场景是什么?

MapReduce教程(一)基于MapReduce框架开发&lt;转&gt;

1 MapReduce编程 1.1 MapReduce简介 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,用于解决海量数据的计算问题. MapReduce分成了两个部分: 1.映射(Mapping)对集合里的每个目标应用同一个操作.即,如果你想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping. 2.化简(Reducing)遍历集合中的元素来返回一个综合的结果.即,输出表单里一列数字的和这个任务属于reducing. 你向Ma

Hadoop伪分布安装详解+MapReduce运行原理+基于MapReduce的KNN算法实现

本篇博客将围绕Hadoop伪分布安装+MapReduce运行原理+基于MapReduce的KNN算法实现这三个方面进行叙述. (一)Hadoop伪分布安装 1.简述Hadoop的安装模式中–伪分布模式与集群模式的区别与联系. Hadoop的安装方式有三种:本地模式,伪分布模式,集群(分布)模式,其中后两种模式为重点,有意义 伪分布:如果Hadoop对应的Java进程都运行在一个物理机器上,称为伪分布 分布:如果Hadoop对应的Java进程运行在多台物理机器上,称为分布.[集群就是有主有从] 伪

第一节:XML学习

第一节:XML学习 XML是什么 XML是可拓展标记语言,类似于HTML. 但它的设计宗旨是出传输数据而不是显示数据,也就是说HTML设计宗旨是为了显示数据. XML标签没有被预定于,需要自行定义标签.有自我描述性. XML应用场景 用于存储一对多的数据 用于当作配置文件存储数据 XML与HTML的差异 XML与HTML设计目的不同,HTML主要应用于显示数据比如网页开发等,XML用于传输和存储数据. HTML用于显示信息,XML用于传输信息 XML是对HTML的补充 为什么用XML 为了便于不

hadoop学习;Streaming,aggregate;combiner

hadoop streaming允许我们使用任何可执行脚本来处理按行组织的数据流,数据取自UNIX的标准输入STDIN,并输出到STDOUT 通过设定mapper为'RandomSample.py 10',我们按十分之一的采样率,没有设定特殊的reducer,一般默认使用IdentityReducer(把输入直接转向输出) 通过HDFS的命令getMerge(输出合并)或其他文件操作,可以获得正确数目的输出文件 随机采样脚本用Python实现,但是只要基于STDIN和STDOUT的脚本语言都可以