hadoop源码
土豆钊
求知若渴,大智若愚
展开
-
关于Hadoop IPC的一个小例子
对于分布式系统而言,RPC毫无疑问是非常重要的,其负责机器之间的通信,而在hadoop中,相应的RPC调用更是不计其数,这里仅仅简单提供一个Hadoop IPC的一个小例子,供大家研究。(1)继承自VersionedProtocol的接口import org.apache.hadoop.ipc.VersionedProtocol;public interface IPCQueryStatus ...原创 2018-04-12 14:35:31 · 975 阅读 · 1 评论 -
MapReduce模型中的一些细节讨论
MapReduce的分析模型中,还是有些东西值得讨论和研究的:本文讨论一些MapReduce执行过程中的细节问题,可与本人另外一篇博客相互对照学习:接下来,进入正文(本文讨论依旧是基于Hadoop-1.0.0):-----------------------------------------------------------public static class IntSumReducer e...原创 2018-06-06 18:49:18 · 307 阅读 · 0 评论 -
关于Yarn源码那些事(七)
上文说到,需要指定Container所在的NM启动其上的Container,我们看看这个方法的内容:/** * Start a list of containers on this NodeManager. */ @Override public StartContainersResponse startContainers( StartContainersRequest req...原创 2018-05-16 18:21:17 · 858 阅读 · 1 评论 -
关于Yarn源码的那些事(六)
终于可以继续写ApplicationMaster提交和运行的整体流程了。在上次分析到RMAppAttemptImpl的时候,觉得自己对于调度器和状态机了解地不是很清楚,因此暂停,先把一些需要了解的概念分析清楚,今天,继续分析ApplicationMaster提交运行的整体流程:上文中,我们提到,RMAppAttemptImpl的状态从RMAppAttemptState.SCHEDULED,在事件R...原创 2018-05-16 15:23:15 · 494 阅读 · 0 评论 -
关于Yarn源码那些事-番外-Yarn的状态机
上一篇番外,写了Yarn的调度机制,这种大型的调度,主要用于类与类之间的调度,简单来说,就是一个类对于那些觉得自己管控不了的事情,就将其扔给别人来处理。Yarn中很多的类都是有调度器的,而且它们大多都持有全局调度器,对于自己处理不了的事情,干脆利落地将其扔到RM或者NM的调度器中。全局调度器就相当于一个统筹者,一根线,把所有的类给串起来,而在很多类的内部,同样支持事件的处理,而本文就讨论下这种处理...原创 2018-05-16 00:50:36 · 737 阅读 · 0 评论 -
分析MapReduce模型源码
在MapReduce编程模型中,有一个东西吸引了我的兴趣:代码如下:public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private...原创 2018-05-26 17:13:25 · 1372 阅读 · 0 评论 -
关于Yarn源码那些事-番外-Yarn的异步调度
在Yarn源码的研究过程中,有些概念比较重要,譬如Yarn的调度机制,事件机制和服务库等,这些概念有些含混,我们还是从源码角度上,来对这些概念一点点进行深入了解,对于了解Yarn的运行机制,有很大的好处。本文,从源码层面来说一下Yarn的异步调度,这个词可能不太合适,直接看源码吧(想到哪儿,说到哪儿):从ResourceManager说起(这里是基于2.6.5版本的Hadoop):1:RM中的调度...原创 2018-05-15 18:18:17 · 609 阅读 · 0 评论 -
关于Yarn源码的那些事(三)
接系列(二)。介绍完ApplicationSubmissionContext之后,继续下去:@Override public YarnClientApplication createApplication() throws YarnException, IOException { ApplicationSubmissionContext context = Records....原创 2018-05-08 19:35:16 · 946 阅读 · 1 评论 -
关于Yarn源码的那些事(二)
本文,讨论一下提交的MapReduce作业,究竟是如何运行起来的?还是基于Hadoop 2.2.0的版本,力求能够从源码角度将该问题讲述清楚。本文会尽可能解决系列(一)中提出的那些问题,并且提出一些新的问题。1:我们提交的MapReduce程序,到底是如何运行在Yarn框架上的?这个问题,一点点来定位。首先,我们需要在mapred-site.xml配置文件中指定mapreduce.framewor...原创 2018-05-08 16:35:41 · 1244 阅读 · 0 评论 -
详细解析如何运行hadoop自带例子
本文,简单介绍下,如何运行hadoop自带的mapreduce的那些例子。本文针对的hadoop版本,是2.6.5版本,自带的例子包名为:hadoop-mapreduce-examples-2.6.5.jar;位于/share/hadoop/mapreduce目录下。简单来说,如果想要完成范例的运行,直接:hadoop jar hadoop-mapreduce-examples-2.6.5.jar...原创 2018-05-07 19:10:38 · 8498 阅读 · 0 评论 -
关于Yarn源码那些事前传-NodeManager(二) 服务启动篇
上文说了NodeManager的初始化,本文说下其服务启动的代码:@Override protected void serviceStart() throws Exception { try { doSecureLogin(); } catch (IOException e) { throw new YarnRuntimeException("Failed NodeManag...原创 2018-05-13 17:04:34 · 757 阅读 · 0 评论 -
关于Yarn源码那些事-前传之NodeManager(一) 初始化篇
本文,说下NodeManager篇:本文重在于介绍初始化部分:还是从start-yarn.sh的脚本追本溯源,最后发现启动的类是NodeManager:package org.apache.hadoop.yarn.server.nodemanager;public static void main(String[] args) { Thread.setDefaultUncaughtExcep...原创 2018-05-13 15:37:31 · 527 阅读 · 0 评论 -
关于Yarn源码的那些事(五)
上文说到ApplicationMaster的调度便戛然而止,本文继续。private static final class AddApplicationToSchedulerTransition extends RMAppTransition { @Override public void transition(RMAppImpl app, RMAppEvent event) { a...原创 2018-05-14 23:53:56 · 824 阅读 · 0 评论 -
关于Yarn源码的那些事(四)
紧接着系列(三)。前面的介绍,基本都比较浅显易懂,讲述了Yarn的Client提交新的Application给ResourceManager,后者返回唯一的ID。本文索要讲的,是RM端如何把Application的ApplicationMaster给启动起来的。力求通俗易懂,但是看起来没那么容易。追溯下来,我们发现第二次提交Application的逻辑,是由YarnRunner来实现的,实现如下:...原创 2018-05-12 23:46:34 · 1260 阅读 · 0 评论 -
关于Yarn源码那些事-前传之ResourceManager篇(二) 启动篇
上文说了下服务的初始化,本文认真说下服务的启动。RMStateStore rmStore = rmContext.getStateStore(); // The state store needs to start irrespective of recoveryEnabled as apps // need events to move to further states. rmSt...原创 2018-05-12 17:01:38 · 1024 阅读 · 0 评论 -
从源码看Yarn上的MapReduce(一)
本系列并不过多涉及Yarn的相关源码,重点在于,分析MapReduce这个计算模型,到底是如何跑起来的,无论是在Yarn上,还是在MR1上。本文有些内容与关于Yarn源码系列有交汇,两相对照,学习更深入。本文基于2.6.5的Hadoop源码:我们从头来看,比如说我提交了一个简单的Job程序,其中有Main方法 Configuration conf = new Configuration(); ...原创 2018-05-17 19:35:20 · 439 阅读 · 0 评论 -
关于Yarn源码那些事-前传之ResourceManager篇(一)初始化
在关于Yarn那些事的博客里,介绍的主要是针对任务提交的一个动态流程说明,而其中牵涉到的一些细节问题,必须通过Resourcemanager的启动和NodeManager的启动,来更好的说明。而本系列,就详细说说ResourceManager启动过程中,都发生了什么。我们都知道,Yarn的启动脚本是start-yan.sh,我们就从这个脚本开始,琢磨琢磨。"$bin"/yarn-daemon.sh...原创 2018-05-12 14:51:51 · 1275 阅读 · 0 评论 -
浅析Yarn中的关键概念-Container
初学Yarn的时候,对于Container的概念感觉非常陌生,即便是后期用了很长时间的Yarn平台,依旧觉得对于Container这个概念没有达到非常熟悉的程度:本文,从源码的角度上来说说,到底什么是Container:说起来非常容易,Container就是Yarn中的一个动态资源分配的概念,其拥有一定的内存,核数,由RM分配给ApplicationMaster或者MapTask或者ReduceT...原创 2018-06-20 11:10:32 · 13141 阅读 · 0 评论