MapReduce源码分析
文章平均质量分 83
lipeng_bigdata
这个作者很懒,什么都没留下…
展开
-
Yarn源码分析之参数mapreduce.job.reduce.slowstart.completedmaps介绍
mapreduce.job.reduce.slowstart.completedmaps是MapReduce编程模型中的一个参数,这个参数的含义是,当Map Task完成的比例达到该值后才会为Reduce Task申请资源,默认是0.05。原创 2016-04-30 10:54:42 · 17000 阅读 · 0 评论 -
MapReduce源码分析之JobSubmitter(一)
JobSubmitter,顾名思义,它是MapReduce中作业提交者,而实际上JobSubmitter除了构造方法外,对外提供的唯一一个非private成员变量或方法就是submitJobInternal()方法,它是提交Job的内部方法,实现了提交Job的所有业务逻辑。本文,我们将深入研究MapReduce中用于提交Job的组件JobSubmitter。原创 2016-04-22 17:50:26 · 10391 阅读 · 0 评论 -
MapReduce源码分析之新API作业提交(二):连接集群
MapReduce作业提交时连接集群是通过Job的connect()方法实现的,它实际上是构造集群Cluster实例cluster。Cluster为连接MapReduce集群的一种工具,提供了一种获取MapReduce集群信息的方法。在Cluster内部,有一个与集群进行通信的客户端通信协议ClientProtocol实例client,它由ClientProtocolProvider的静态create()方法构造,而Hadoop2.6.0中提供了两种模式的ClientProtocol,分别为Yarn模式的Y原创 2016-04-22 13:42:17 · 2043 阅读 · 0 评论 -
MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考
MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案在性能和业务逻辑方面的考虑,您或许不以为然,可能觉得性能提升不大,但是如果在大规模集群中,当作业数量庞大、任务数目数量庞大时,这种优势就愈发明显,而它带来的好处,于已,于别的作业来说,都会是一种福音!这种设计上的细节,值得我们学习、借鉴与反思!原创 2016-05-07 09:42:57 · 8852 阅读 · 0 评论 -
Yarn源码分析之MapReduce作业中任务Task调度整体流程(一)
v2版本的MapReduce作业中,作业JOB_SETUP_COMPLETED事件的发生,会触发作业由SETUP状态转换到RUNNING状态,而作业状态转换中涉及作业信息的处理,是由SetupCompletedTransition来完成的,它主要做了四件事:1、通过设置作业Job的成员变量setupProgress为1,标记作业setup已完成;2、调度作业Job的Map Task;3、调度作业的JobReduce Task;4、如果没有task了,则生成JOB_COMPLETED事件并交由作业的事件处理器原创 2016-05-06 14:25:41 · 11899 阅读 · 0 评论 -
MapReduce源码分析之JobSplitWriter
JobSplitWriter被作业客户端用于写分片相关文件,包括分片数据文件job.split和分片元数据信息文件job.splitmetainfo。分片数据文件job.split存储的主要是每个分片对应的HDFS文件路径,和其在HDFS文件中的起始位置、长度等信息,而分片元数据信息文件job.splitmetainfo存储的则是每个分片在分片数据文件job.split中的起始位置、长度等信息。原创 2016-04-21 09:23:49 · 9978 阅读 · 0 评论 -
MapReduce源码分析之作业Job状态机解析(一)简介与正常流程浅析
Job状态机维护了MapReduce作业的整个生命周期,即从提交到运行结束的整个过程。Job状态机被封装在JobImpl中,其主要包括14种状态和19种导致状态发生的事件。原创 2016-05-05 10:38:12 · 7842 阅读 · 0 评论 -
MapReduce源码分析之LocatedFileStatusFetcher
LocatedFileStatusFetcher通过多线程的方式,实现了针对给定输入路径数组,使用配置的线程数目来获取数据块位置的核心功能。它通过google的可监听并发技术ListenableFuture、ListeningExecutorService,实现了两层级别的子任务的并发执行、结果监听与回调处理,还使用了可重入互斥锁ReentrantLock、多线程间协调通信工具Condition来解决多线程之间的并发同步问题,特别是主任务线程与子任务线程间的主从协调、通信等。原创 2016-04-20 14:05:10 · 9257 阅读 · 0 评论 -
Hadoop2.6.0版本MapReudce示例之WordCount(二)
继《Hadoop2.6.0版本MapReudce示例之WordCount(一)》之后,我们继续看MapReduce的WordCount示例,看看如何监控作业运行或查看历史记录,以及作业运行时的文件目录及列表。原创 2016-04-19 21:58:02 · 7145 阅读 · 0 评论 -
Hadoop2.6.0版本MapReudce示例之WordCount(一)
本文详细讲解了Hadoop2.6.0版本MapReudce示例之WordCount的测试数据准备、运行命令、运行过程展示、运行结果查看等过程,并展示了WordCount的代码。原创 2016-04-18 16:03:19 · 9198 阅读 · 0 评论 -
MapReduce源码分析之InputFormat
InputFormat描述了一个Map-Reduce作业中的输入规范。Map-Reduce框架依靠作业的InputFormat实现以下内容: 1、校验作业的输入规范; 2、分割输入文件(可能为多个),生成逻辑输入分片InputSplit(往往为多个),每个输入分片InputSplit接着被分配给单独的Mapper; 3、提供记录读取器RecordReader的实现,RecordReader被用于从逻辑输入分片InputSplit收集输入记录,这些输入记录会被交原创 2016-04-19 19:41:36 · 960 阅读 · 0 评论 -
Yarn源码分析之如何确定作业运行方式Uber or Non-Uber?
作业运行方式Uber or Non-Uber是通过Job的makeUberDecision()方法,传入作业大小inputLength来确定的,本文,我们将研究这一话题,即如何确定作业运行方式Uber or Non-Uber?原创 2016-05-03 18:35:18 · 15489 阅读 · 0 评论 -
Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(二)
我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMaster的实现,由其控制MR作业在Yarn上的执行。如此,随之而来的一个问题就是,MRAppMaster是如何控制MapReduce作业在Yarn上运行的,换句话说,MRAppMaster上MapReduce作业处理总流程是什么?这就是本文要研究的重点。原创 2016-05-01 03:49:14 · 10824 阅读 · 0 评论 -
Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)
我们知道,如果想要在Yarn上运行MapReduce作业,仅需实现一个ApplicationMaster组件即可,而MRAppMaster正是MapReduce在Yarn上ApplicationMaster的实现,由其控制MR作业在Yarn上的执行。如此,随之而来的一个问题就是,MRAppMaster是如何控制MapReduce作业在Yarn上运行的,换句话说,MRAppMaster上MapReduce作业处理总流程是什么?这就是本文要研究的重点。原创 2016-05-01 01:15:17 · 21659 阅读 · 0 评论 -
MapReudce源码分析之Mapper
Mapper是MapReduce编程模型中一个将输入的key/value对映射成一组中间key/value对的组件。Map是将输入记录转换成中间记录的单个任务。被转换的中间记录不需要与输入记录一样的类型。一个给定的输入对可能被映射成0个货多个输出对。Hadoop的MapReduce框架为作业中输入格式InputFormat产生的每个输入分片InputSplit产生一个Map任务。通过JobContext的getConfiguration()方法,Mapper的实现者可以获得任务的配置信息。MapReduce原创 2016-04-18 21:16:10 · 1585 阅读 · 0 评论