Hadoop中的Combiner实践

Combiner作用是合并Mapper的输出,Combiner的输出作为Reducer的输入,这样可以减少map任务和reducer任务之间的数据传输。

1、在Job中设置Combiner和不设置Combiner,观察Reducer输入情况

使用如下代码设置Combiner

job.setCombinerClass(MaxTemperatureReducer.class);

@Override

public int run(String[] args) throws Exception {

Job job = new Job();

job.setJarByClass(MaxTemperature.class);

job.setJobName("Max temperature");

FileInputFormat.addInputPath(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

job.setMapperClass(MaxTemperatureMapper.class);

// job.setCombinerClass(MaxTemperatureReducer.class); 是否设置Combiner

job.setReducerClass(MaxTemperatureReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

job.waitForCompletion(true);

//输出任务完成情况

System.out.println( "任务名称:" + job.getJobName() );

System.out.println( "任务成功:" + ( job.isSuccessful()?"是":"否" ) );

System.out.println( "输入行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_INPUT_RECORDS").getValue() );

System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "MAP_OUTPUT_RECORDS").getValue() );

System.out.println( "输出行数:" + job.getCounters().findCounter("org.apache.hadoop.mapred.Task$Counter", "REDUCE_INPUT_RECORDS").getValue() );

return job.isSuccessful() ? 0 : 1;

}

2、以下是不设置Combiner的情况输出结果,Reducer输入行数与Mapper输出行数相等

任务名称:Max temperature

任务成功:是

MAP_INPUT_RECORDS输入行数:1207

MAP_OUTPUT_RECORDS行数:1190

REDUCE_INPUT_RECORDS行数:1190

任务开始:2015-04-24 14:26:00

任务结束:2015-04-24 14:26:03

任务耗时:0.04995 分钟

3、以下是设置Combiner的情况输出结果,经过Combiner后,Reducer输入行数大幅度减少。

任务名称:Max temperature

任务成功:是

MAP_INPUT_RECORDS输入行数:1207

MAP_OUTPUT_RECORDS行数:1190

REDUCE_INPUT_RECORDS行数:1

任务开始:2015-04-24 14:28:23

任务结束:2015-04-24 14:28:25

任务耗时:0.030966667 分钟

时间: 2024-07-30 21:35:42

Hadoop中的Combiner实践的相关文章

Hadoop中的MultipleOutputs实践

本例子采用hadoop1.1.2版本 采用气象数据作为处理数据 1.MultipleOutputs例子,具体解释在代码中有注释 package StationPatitioner; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.

Hadoop中Combiner的使用

文章转载于:http://blog.csdn.net/ipolaris/article/details/8723782 Hadoop中Combiner的使用 在MapReduce中,当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,有不影响最终的结果呢.有一种方法就是使用Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出.下面以<Hadoop in action>中的专利数据为例.我们打算统计每个国家的专利数目

Hadoop初学指南(8)--MapReduce中的Combiner操作

本文主要介绍了MapReduce中的Combiner操作. 在MapReduce的执行步骤中,我们一共分了8步,其中Map中的最后一步规约操作就是今天要讲的Combiner. 首先看一下前文中的计数器: 我们可以发现,其中有两个计数器:Combine output records和Combine input records,他们的计数都是0,这是因为我们在代码中没有进行规约操作. 现在我们加入规约操作. 在前文代码(参看http://xlows.blog.51cto.com/5380484/14

Hadoop大数据时代:Hadoop&amp;YarnSpark企业级最佳实践 (4天)

Hadoop.Yarn.Spark是企业构建生产环境下大数据中心的关键技术,也是大数据处理的核心技术,是每个云计算大数据工程师必修课. 大数据时代的精髓技术在于Hadoop.Yarn.Spark,是大数据时代公司和个人必须掌握和使用的核心内容. Hadoop.Yarn.Spark是Yahoo!.阿里淘宝等公司公认的大数据时代的三大核心技术,是大数据处理的灵魂,是云计算大数据时代的技术命脉之所在,以Hadoop.Yarn.Spark为基石构建起来云计算大数据中心广泛运行于Yahoo!.阿里淘宝.腾

Hadoop MapReduce开发最佳实践(上篇)

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

王家林的云计算分布式大数据Hadoop企业级开发动手实践

一:课程简介: Hadoop是云计算分布式大数据的事实标准软件框架,Hadoop中的架构实现是整个云计算产业技术的基础,作为与Google三大核心技术DFS.MapReduce.BigTable相对的HDFS.MapReduce.和HBase也是整个Hadoop生态系统的核心的技术,本课程致力于帮您掌握这三大技术的同时掌握云计算的数据仓库挖掘技术Hive,助您在云计算技术时代自由翱翔. 二:课程特色 1,      深入浅出中动手实作: 2,      掌握Hadoop三大核心:HDFS.Map

mapreduce中的combiner、partitioner、Shuffle

一.combiner combiner不是mapreduce的一个必备过程,是由开发者选择是否使用的,是mapreduce的一种优化手段. combiner的作用:combiner是为了解决mapreduce过程中的两个性能瓶颈,1.网络宽带严重被占降低程序效率,2.单一节点承载过重降低程序效率.所以性能有以下两个作用: 1.combiner实现本地key的聚合,对map输出的key排序value进行迭代 2.combiner还有本地reduce功能(其本质上就是一个reduce). 什么时候运

浅析 Hadoop 中的数据倾斜

转自:http://my.oschina.net/leejun2005/blog/100922 最近几次被问到关于数据倾斜的问题,这里找了些资料也结合一些自己的理解. 在并行计算中我们总希望分配的每一个task 都能以差不多的粒度来切分并且完成时间相差不大,但是集群中可能硬件不同,应用的类型不同和切分的数据大小不一致总会导致有部分任务极大的拖慢了整个任务的完成时间,硬件不同就不说了,应用的类型不同其中就比如page rank 或者data mining 里面一些计算,它的每条记录消耗的成本不太一

Hadoop MapReduce链式实践--ChainReducer

版本:CDH5.0.0,HDFS:2.3.0,Mapreduce:2.3.0,Yarn:2.3.0. 场景描述:求一组数据中按照不同类别的最大值,比如,如下的数据: data1: A,10 A,11 A,12 A,13 B,21 B,31 B,41 B,51 data2: A,20 A,21 A,22 A,23 B,201 B,301 B,401 B,501 最后输出为: A,23 B,501 假如这样的逻辑的mapreduce数据流如下: 假设C组数据比较多,同时假设集群有2个节点,那么这个任