摘要:OverviewNamenode 是HDFS中负责namespace管理的节点,Namenode 保存了当前集群中所存储的的所有的文件的元数据信息,namenode同时与集群中其它的节点通信,以保持元数据与系统中的文件的一致性,同时也和client通信,以响应client对文件的需要。NameNode中主要有两个大类来处理这些需求,FSNamesystem ---- 是一个门面类,主要通过该类调用系统中相应实现来维护namespace信息;NameNodeRpcServer: 是一个ipc实现类,实现了各种protocols, 来与系统中的各个节点通信:NamenodeProtocol: 用来
阅读全文
摘要:OverviewTaskAttempt 对像将是我们的task最后真正执行的地方,前面的所有的工作都是为了让我们的Attempt服务, 在Attempt被创建出来之后,Attemp开始等待SChedule 或ReSchedule 事件, 该事件将由Taskimpl对像触发。图 1-1T_SCHEDULE AND T_RESCHEDULE Handle当Attempt收到该 事件后,Attempt首先通知所有Speculator 将要申请 container, 然后 向 ContainerAlloctor 申请container来运行当前的task: // Tell any speculator
阅读全文
摘要:Overview图 1-1JOB_INIT HANDLE当Job收到JOB_INIT事件之后,Job开始初始自己:图 2-1首先,Job要setup相应配置信息,包括,Job submit id, 提交时的目录, 运行job所需的配置文件,安全信息; String oldJobIDString = job.oldJobId.toString(); String user = UserGroupInformation.getCurrentUser().getShortUserName(); Path path = MRApps.getStagingAre...
阅读全文
摘要:OverviewMRAppMaster 初始化成功之后, Master 开始根据运行时的配置信息加Job并为之请求Container执行任务。Start Job 图 1-1图 1-2Code: amInfos = new LinkedList(); completedTasksFromPreviousRun = new HashMap(); processRecovery(); // Current an AMInfo for the current AM generation. AMInfo amInfo = MRBuilderUtils.n...
阅读全文
摘要:OverviewApplicationMaster 是运MapReduce 任务的中间核心组组件,主要负责向ResourceManager请求Container来运行任务,并监视任务的执行:图 1-1上图展示了,ApplicationMaster 在初始化的时候,做了哪 些事情, 当一个新的任务提交的时候,ApplicationMaster会依次启动下列的Service:Dispatcher:AsyncDispatcherclientService:MRClientServiceCommitterEventHandler Service:CommitterEventHandlerTaskAtt
阅读全文
摘要:OverviewHadoop 的任务是通过Job对像提交到系统处理的,所以Job对像带有一切运行任务所需要的信息。下图展示了,Job运行过程所经历的所有阶段:图 1-1在配置 完Job对像之后,Job会首初始化一个Cluster对像,用来保存Cluster相关的信息,包括用来与ResourceManager通信的客户端:图 1-2Cluster对像初始化的时候,会先去寻找 ClientProvider实现,配置在文件:META-INF/services/org.apache.hadoop.mapreduce.protocol.ClientProtocolProvider中, 默认为:YarnC
阅读全文
摘要:overviewINIT_APPLICATION Handle收到 该 事件通知,Application 保存当前的用户的ACL信息,并通知logHandler,记录用户信息,App进入INITING状态: app.applicationACLs = initEvent.getApplicationACLs(); app.aclsManager.addApplication(app.getAppId(), app.applicationACLs); // Inform the logAggregator app.dispatcher.getEventHand...
阅读全文
摘要:overview上图中还有一个状态变换,从killing 到 Exited_with_failure,这个变换由事件:CONTAINER_EXITED_WITH_FAILURE 触发,执行:ExitedWithFailureTransition;INIT_CONTAINER And RESOURCE_LOCALIZED HandleContainer 收到该事件通知后,会首先偿试启动所有的和当前App 相关的 AuxServices, for (Map.Entry service : csd.entrySet()) { container.dispatcher.getEve...
阅读全文
摘要:OverviewNodeManager 是hadoop cluster的server中,负责管理,执行任务相关的资源,主要通过ResouceManager和ApplicationsManager通信,通过ContainerManager与ApplicationMasterService 通信,InitiateServicesDeletionServiceNodeHealthCheckerServiceNodeResouceMonitorContainerManagerWebServerDispatcherNodeStatusUpdateEvent HandlerContainerManager
阅读全文
摘要:OverviewRMAppAttempt state machine图 1-1APP_ACCEPTED HandleRMAppAttempt 由RMApp创建并启动,向scheduler 提交靖求之后进入submited 状态。 scheduler 验证请求,并创建一个内部App对像并提交到queue,等待调度,向dispatcher 发送APP_ACCEPTED消息,最终该消息将由RMAppAttempt处理:(这里以CapacityScheduler为例) FiCaSchedulerApp SchedulerApp = new FiCaSchedulerApp(ap...
阅读全文
摘要:Overview在hadoop中,很多资源的任务的实现都是用FSM来实现的,这里,用RMApp的实现来分析一下,Hadoop FSM。下图展示了,Hadoo 中RMApp的状态机变化:图 1-1下面再来看一下,每个事件是什么时候触发,当事件发生的时候,又做了什么!完整的状态机在 Classloader 将RMAppImpl load 到JVM中就建立来, 初始的状态,NEW 在RMAppImpl 对像初始化的时候,建立,这是由ApplicationManager初始化的。 // Create RMApp application = new RMAppImpl(a...
阅读全文
摘要:Overview在hadoop中有几大类资源要管理,为管理这些资源,hadoop定义了自己的,通信的协议, 下表是通用的请求格式hrpcversionService classAuthMethodSerialize type(0)Body length5 bytes protocol header tag5 bytes valueMore tags at least 3,(callId, RpcOp, RpcKind)…..5 bytes Request header tag5 bytes lengthHeader body1More tags (method name, protocol c
阅读全文
摘要:初始化ResourceManager 是Hadoop mapreduce v2 实现在的核心之一, 它负责,接收并分发客户请求,监视集群中可用的Node资源。在系统启动的时候,ResourceManager会启动实例化以下的service和 对像。Resourcemanager在初化过程中会读取yarn.resourcemanager.recovery.enabled 标志,如果打开,resourcemanager会偿试,从之前保存的状态恢复。默认关闭。 图 1-1在初始化过程中对应的Event及Handler如下:Event reg...
阅读全文