mapreduce(2)--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流程解析

原文地址:https://www.cnblogs.com/ManchesterCityCoder/p/10804595.html

时间: 2024-11-08 22:04:34

mapreduce(2)--combiner使用和mr流程解析的相关文章

SSL/TLS算法流程解析

SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住.本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获. 一.相关版本 Version Source Description   Browser Support SSL v2.0 Vendor Standard (from Netscape Corp.) [SSL2] First SSL protocol for which implementations exist - NS Navigator 1.x/2.x - MS

MediaPlayer本地播放流程解析(一)

应用场景: MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaPlayer.release(); mediaPlayer = null; } }); mediaPlayer.setDataSource("abc.m

MediaPlayer本地播放流程解析(二)

上一篇MediaPlayer本地播放流程解析(一)讲了MediaPlayer的setDataSource流程,本篇将接着讲MediaPlayer的prepare流程. Prepare前面的流程一直到AwesomePlayer,和setDataSource都基本上一样,这里直接略掉.下面将从AwesomePlayer开始. status_t AwesomePlayer::prepare() { ATRACE_CALL(); Mutex::Autolock autoLock(mLock); retu

蓝牙OBEX剖析(二)-- 流程解析

OBEX流程解析(封包格式见上篇文章) 1.连接 2.Get 3.put 4.disconnect

Android 之MediaScanner流程解析

MediaScanner详解 OK, 我们现在开始来大概分析一下android framework中MediaScanner部分的流程,若大家发现分析过程中有错误,欢迎拍砖指正. 分析流程之前,我们先给自己定个要用MediaScanner解决的问题,这样我们才会有目标感,才知道我们要干什么.否则,干巴巴的分析流程,一般都会很容易的迷失在各种code的迷雾中. 我们这里要定的目标是:获取某个MP3文件的artist & album. 我们可以假定,现在有个媒体播放器,在播放music的时候,需要在

linux引导流程解析

三:linux引导流程解析 date 当前系统硬件时钟 hwclock 固件(介于硬件和软件之间的)时钟 ---->一般系统时钟和固件时钟是同步的 hwclock --hctosys 同步时钟 手动修改系统当前时间: date 040617032015.38 (2015-04-06 17:03:38) 手动修改固件时间:(man hwclock可以查看) hwclock --set --date="4/6/15 17:06:40" linux的pc server 一般用的是 CM

EurekaClient自动装配及启动流程解析

在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类EurekaDiscoveryClientConfigServiceBootstrapConfiguration @ConditionalOnClass(ConfigServicePropertySourceLocator.class) @ConditionalOnProperty(value =

Mysql流程解析

Mysql流程解析 流程图 流程图解析 客户端发送一条sql语句. 1.此时,mysql会检查sql语句,查看是否命中缓存,如果命中缓存,直接返回结果,不继续执行.没有命中则进入解析器. 2.解析器会检查sql语句的语法,并生成一个解析树. 3.预处理器会检查解析树的表名,列名等是否正确,表是否有权限等. 4.当解析树是一个合法的了,优化器将其转化成执行计划,一个解析树有多个执行计划,但是都返回同样的结果,唯一不同的是,每个执行计划的成本不一样,mysql会选择一个最低成本的执行计划来执行. 5

MapReduce中Combiner规约的作用以及不能作为MR标配的原因

作用:在Mapper端对数据进行Combine归约处理,Combine业务逻辑与Reducer端做的完全相同.处理后的数据再传送到Reducer端,再做一次归约.这样的好处是减少了网络传输的数量.在Mapper进行归约后,数据量变小了,这样再通过网络传输时,传输时间就变短了,减少了整个作业的运行时间.(注意:Mapper端的数据仅仅是本节点处理的数据,而Reducer端处理的数据是来自于多个Mapper任务的输出.因此在Mapper不能归约的数据,在Reducer端有可能归约处理). 不能作为标