mapreduce--combiner使用和mr流程解析
Posted manchestercitycoder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mapreduce--combiner使用和mr流程解析相关的知识,希望对你有一定的参考价值。
一.准备工作
1.需求
- 在wordcount程序中使用自定义combiner
- 解析mapreduce的流程
2.环境配置
(1)hadoop为本地模式
(2)pom文件代码如下
<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies>
二.使用自定义combiner的wordcount程序
1.combiner介绍
- combiner程序可以在mapper程序输出结果的时候对每个reduce分区进行汇总,由于在wordcount中combiner做的事情和reducer做的事情是一样的,所以在wordcount中直接使用WordcountReducer类作为combiner
- combiner使用需要注意业务场景,如果reduce是对每个分区求平均数,那么就不适合中间使用combiner,这是因为局部汇总结果会导致最终结果不一致。
2.使用自定义combiner的wordcount程序
github链接:https://github.com/gulu2016/STBigData/tree/master/src/main/java/cn/gulu/bigdata/mr/wordcountWithCombiner
三.指定InputFormat为CombineTextInputFormat的wordcount程序
1.为什么要使用指定InputFormat为CombineTextInputFormat
在没有指定InputFormat情况下,默认128MB一个切片,不足128MB的页作为一个切片,一个切片对应一个MapTask。
这样会产生一个问题,如果有大量的小文件,那么就会有大量的MapTask。
为了解决这个问题,可以指定InputFormat为CombineTextInputFormat,它可以合并多个小文件到一个切片。
2.指定InputFormat为CombineTextInputFormat的wordcount程序
github链接:https://github.com/gulu2016/STBigData/tree/master/src/main/java/cn/gulu/bigdata/mr/wordcountWithCombineTextInputFormat
3.效果对比
在没有使用CombineTextInputFormat的情况下,处理5个小文件会分为5个切片,对应地,有5个MapTask进行处理。
在使用CombineTextInputFormat之后,同样处理5个小文件,这5个小文件会被划分成同一个切片,这样就会启动一个MapTask。
四.mr流程解析
以上是关于mapreduce--combiner使用和mr流程解析的主要内容,如果未能解决你的问题,请参考以下文章
大数据之Hadoop(MapReduce):Combiner合并案例实操
5G核心网技术基础自学系列 | MR-DC:签约QoS流E-RAB和MR-DC承载
费用流 ICPC 2016 China Final J. Mr.Panda and TubeMaster