您的位置:首页 > 运维架构

YARN(Hadoop)学习笔记(6)

2015-01-01 17:10 330 查看
YARN应用程序分析

我们先回顾一下YARN的三个核心组件,分别是ResourceManager,NodeManager和ApplicationMaster。
首先RM是一个中心的服务,它做的事情是调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况。RM负责作业与资源的调度。接收 JobSubmitter 提交的作业,按照作业的上下文 (Context) 信息,以及从 NodeManager 收集来的状态信息,启动调度过程,分配一个 Container 作为 ApplicationMaster

NodeManager 功能比较专一,就是负责 Container 状态的维护,与AM通讯,并向 RM保持心跳。
AM 负责一个 Job 生命周期内的所有工作,类似老的框架中 JobTracker。但注意每一个 Job(不是每一种)都有一个 ApplicationMaster,它可以运行在 RM以外的机器上。
应用程序是用户编写的处理数据的程序的统称,它从YARN中申请资源以完成自己的计算任务。YARN自身对应用程序的类型没有任何限制,既可以处理短任务作业,例如MapReduce作业,又能处理长作业,如Strom Service、Hbase Service等。
YARN作为一个资源管理系统,负责Cluster资源的管理和调度。如果想要将一个新的应用程序运行在YARN之上,通常需要编写2个组件Client和ApplicationMaster。这两个组件的编写需要考虑RPC调用和任务容错等细节。YARN将大量的应用程序抽象成了一种通用的框架。比如MapReduce就是已经实现的一种应用框架。
作为YARN上执行的应用程序的两个重要组件Client和AM,他们在应用程序执行过程中的作用是完全不同的。Client负责向RM提交AM。而AM负责向RM注册,申请应用程序执行的资源,并与节点管理器NM进行通信已启动各自的Container。另外AM还负责监控各个任务的运行状态,并在失败时为期申请资源。

AM执行完成后会通过RPC的方式告知RM应用程序开始注册,示例代码如下所示:
   RegisterApplicationMasterResponseresponse = amRMClient.registerApplicationMaster(appMasterHostname,appMasterRpcPort,appMasterTrackingUrl);  
 

AM负责向RM申请资源。RM相应的会返回一个集群可以使用的资源,包括内存CPU等

maxMem=response.getMaximumResourceCapability().getMemory();

maxVCores=response.getMaximumResourceCapability().getVirtualCores();

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息