随笔分类 -  MapReduce源码分析

摘要:我们知道,MapReduce有三层调度模型,即Job——>Task——>TaskAttempt,并且: 1、通常一个Job存在多个Task,这些Task总共有Map Task和Redcue Task两种大的类型(为简化描述,Map-Only作业、JobSetup Task等复杂的情况这里不做考虑); 阅读全文
posted @ 2016-06-03 15:18 吉日木图 阅读(297) 评论(0) 推荐(0)
摘要:v2版本的MapReduce作业中,作业JOB_SETUP_COMPLETED事件的发生,即作业SETUP阶段完成事件,会触发作业由SETUP状态转换到RUNNING状态,而作业状态转换中涉及作业信息的处理,是由SetupCompletedTransition来完成的,它主要做了四件事: 1、通过设 阅读全文
posted @ 2016-06-03 15:17 吉日木图 阅读(367) 评论(0) 推荐(0)
摘要:作业Job状态机维护了MapReduce作业的整个生命周期,即从提交到运行结束的整个过程。Job状态机被封装在JobImpl中,其主要包括14种状态和19种导致状态发生的事件。 作业Job的全部状态维护在类JobStateInternal中,如下所示: [java] view plain copy 阅读全文
posted @ 2016-06-03 15:16 吉日木图 阅读(290) 评论(0) 推荐(0)
摘要:在MRAppMaster中,当MapReduce作业初始化时,它会通过作业状态机JobImpl中InitTransition的transition()方法,进行MapReduce作业初始化相关操作,而这其中就包括: 1、调用createSplits()方法,创建分片,并获取任务分片元数据信息Task 阅读全文
posted @ 2016-06-03 15:15 吉日木图 阅读(371) 评论(0) 推荐(1)
摘要:本文继《Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)》,接着讲述MapReduce作业在MRAppMaster上处理总流程,继上篇讲到作业初始化之后的作业启动,关于作业初始化主体流程的详细介绍,请参见《Yarn源码分析之MRAppMaster上MapReduce作 阅读全文
posted @ 2016-06-03 15:12 吉日木图 阅读(301) 评论(0) 推荐(0)
摘要:我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMaster的实现,由其控制MR作业在Yarn上的执行。如此,随之而来的一个问题就是,MRAppMaste 阅读全文
posted @ 2016-06-03 15:11 吉日木图 阅读(410) 评论(0) 推荐(0)
摘要:mapreduce.job.reduce.slowstart.completedmaps是MapReduce编程模型中的一个参数,这个参数的含义是,当Map Task完成的比例达到该值后才会为Reduce Task申请资源,默认是0.05,其在接口MRJobConfig中表示如下: [java] v 阅读全文
posted @ 2016-06-03 15:11 吉日木图 阅读(1106) 评论(0) 推荐(0)
摘要:JobSubmitter,顾名思义,它是MapReduce中作业提交者,而实际上JobSubmitter除了构造方法外,对外提供的唯一一个非private成员变量或方法就是submitJobInternal()方法,它是提交Job的内部方法,实现了提交Job的所有业务逻辑。本文,我们将深入研究Map 阅读全文
posted @ 2016-06-03 15:10 吉日木图 阅读(276) 评论(0) 推荐(0)
摘要:JobSplitWriter被作业客户端用于写分片相关文件,包括分片数据文件job.split和分片元数据信息文件job.splitmetainfo。它有两个静态成员变量,如下: [java] view plain copy // 分片版本,当前默认为1 private static final i 阅读全文
posted @ 2016-06-03 15:09 吉日木图 阅读(472) 评论(0) 推荐(0)
摘要:MapReduce作业提交时连接集群是通过Job的connect()方法实现的,它实际上是构造集群Cluster实例cluster,代码如下: [java] view plain copy private synchronized void connect() throws IOException, 阅读全文
posted @ 2016-06-03 15:09 吉日木图 阅读(247) 评论(0) 推荐(0)
摘要:LocatedFileStatusFetcher是MapReduce中一个针对给定输入路径数组,使用配置的线程数目来获取数据块位置的实用类。它的主要作用就是利用多线程技术,每个线程对应一个任务,每个任务针对给定输入路径数组Path[],解析出文件状态列表队列BlockingQueue<List<Fi 阅读全文
posted @ 2016-06-03 15:08 吉日木图 阅读(329) 评论(0) 推荐(0)
摘要:继《Hadoop2.6.0版本MapReudce示例之WordCount(一)》之后,我们继续看MapReduce的WordCount示例,看看如何监控作业运行或查看历史记录,以及作业运行时的文件目录及列表。 1、监控作业运行或查看历史记录 在WordCount的输出内容中,有这么一句:The ur 阅读全文
posted @ 2016-06-03 15:07 吉日木图 阅读(201) 评论(0) 推荐(0)
摘要:InputFormat描述了一个Map-Reduce作业中的输入规范。Map-Reduce框架依靠作业的InputFormat实现以下内容: 1、校验作业的输入规范; 2、分割输入文件(可能为多个),生成逻辑输入分片InputSplit(往往为多个),每个输入分片InputSplit接着被分配给单独 阅读全文
posted @ 2016-06-03 15:06 吉日木图 阅读(143) 评论(0) 推荐(0)
摘要:一、准备测试数据 1、在本地Linux系统/var/lib/Hadoop-hdfs/file/路径下准备两个文件file1.txt和file2.txt,文件列表及各自内容如下图所示: 2、在hdfs中,准备/input路径,并上传两个文件file1.txt和file2.txt,如下图所示: 二、编写 阅读全文
posted @ 2016-06-03 15:05 吉日木图 阅读(261) 评论(0) 推荐(0)