【总结】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 分钟






     本文转自巧克力黒 51CTO博客,原文链接:http://blog.51cto.com/10120275/1637950,如需转载请自行联系原作者



相关文章
|
12月前
|
缓存 资源调度 运维
​Hadoop Yarn 在小米的实践(3)
​Hadoop Yarn 在小米的实践
245 0
|
12月前
|
资源调度 分布式计算 算法
​Hadoop Yarn 在小米的实践(1)
​Hadoop Yarn 在小米的实践
120 0
|
存储 分布式计算 Hadoop
|
分布式计算 Hadoop
Hadoop 入门到实践
Hadoop 入门到实践
78 0
Hadoop 入门到实践
|
SQL 存储 消息中间件
一面数据: Hadoop 迁移云上架构设计与实践
Hadoop 技术栈,一直是企业自建大数据平台的首选。随着企业数据量的指数级增长,云计算时代的到来,企业对存储的弹性、运维及 TCO 都提出了更高要求。曾经自建 Hadoop 大数据平台的企业正逐步将大数据平台迁移至云上。
716 1
一面数据: Hadoop 迁移云上架构设计与实践
|
SQL 分布式计算 数据可视化
基于Hadoop部署实践对网站日志分析(大数据分析案例)(三)
基于Hadoop部署实践对网站日志分析(大数据分析案例)
230 0
基于Hadoop部署实践对网站日志分析(大数据分析案例)(三)
|
SQL 存储 分布式计算
基于Hadoop部署实践对网站日志分析(大数据分析案例)(二)
基于Hadoop部署实践对网站日志分析(大数据分析案例)
432 0
基于Hadoop部署实践对网站日志分析(大数据分析案例)(二)
|
SQL 存储 数据采集
基于Hadoop部署实践对网站日志分析(大数据分析案例)(一)
基于Hadoop部署实践对网站日志分析(大数据分析案例)
391 0
基于Hadoop部署实践对网站日志分析(大数据分析案例)(一)
|
存储 新零售 SQL
Hadoop 数据仓库建设实践(理论结合实践)
Hadoop 数据仓库建设实践(理论结合实践)
364 0
Hadoop 数据仓库建设实践(理论结合实践)
|
分布式计算 Hadoop Linux
D001.7 Docker搭建Hadoop集群(实践篇)
环境及资源准备;生成容器;检验Hadoop
655 0
D001.7 Docker搭建Hadoop集群(实践篇)

相关实验场景

更多