ResourceManager&NodeManager的功能介绍

  1. ResourceManager基本介绍
    ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个NodeManager的资源汇报信息,并把这些信息按照一定的策略分配给各个ApplicationMaster。
  1. RM的职能
    (1)与客户端交互,处理客户端的请求。
    (2)启动和管理AM,并在它运行失败时候重新启动它。
    (3)管理NM,接收来自于NM的资源汇报信息,并向NM下达管理指令。
    (4)资源管理和调度,接收来自于AM的资源请求,并为它分配资源。
  2. 启动ApplicationMaster的过程
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYXmlvs8-1574431342564)(C:\Users\lhx\Desktop\课程资料\Markdow笔记\Hadoop\AppMr.png)]
    (1) 客户端提交一个任务给RM,ClientRMService负责处理客户端请求
    (2) ClentRMService通知RMAppManager。
    (3) RMAppManager为应用程序创建一个RMApp对象来维护任务的状态。
    (4) RMApp启动任务,创建RMAppAttempt对象。
    (5) RMAppAttempt进行一些初始化工作,然后通知ResourceScheduler申请资源。
    (6) ResourceScheduler为任务分配资源后,创建一个RMContainer维护Container状态
    (7) 并通知RMAppAttempt,已经分配资源。
    (8) RMAppAttempt通知ApplicationMasterLauncher在资源上启动AM。
    (9) 在NodeManager的已分配资源上启动AM
    (10) AM启动后向ApplicationMasterService注册。
  3. 声请和分配container

AM向RM请求资源和RM为AM分配资源是两个阶段的循环过程:

阶段一:AM请求资源请求并领取资源的过程,这个过程是AM发送请求、RM记录请求。

阶段二:NM向RM汇报各个Container运行状态,如果RM发现它上面有空闲的资源就分配给等待的AM。

  1. Container超时
    YARN里有两种Container:运行AM的Container和运行普通任务的Container。
    (1) RM为要启动的AM分配Container后,会监控Container的状态,如果指定时间内AM还没有在Container上启动的话,Container就会被回收,AM Container超时会导致Application执行失败。
    (2) 普通超时会进行资源回收,但是不会自动在其他资源上重试,而是通知,由决定是否重试。
  2. 安全管理
    Hadoop的安全管理是为了更好地让多用户在共享Hadoop集群环境下安全高效地使用集群资源。系统安全机制由认证和授权两大部分构成,Hadoop2.0中的认证机制采用Kerberos和Token两种方案,而授权则是通过引入访问控制表(Access Control List,ACL)实现的。
  3. RM HA架构
    通常来说Master/Slave架构中解决单点故障问题都采用热备份来实现HA,一个Active Master对外提供服务,若干个Standby Master实时同步Active Master,一旦Active Master故障,根据一定策略将Standby Master切换为Active Master对外提供服务。
    ResourceManager负责整个集群的资源管理和调度,它的容错性直接导致YARN的可用性和可靠性。
    Active Master和Standby Master之间数据同步一般采用中间共享的存储系统实现,RM HA采用Zookeeper共享存储方案。
    RM HA分为手动模式和自动模式,手动模式是指由管理员通过命令进行主备切换,通常用于服务升级;自动模式可以自动切换但是存在潜在危险。
  1. NodeManager功能介绍
  1. NodeManager基本介绍
    NM是单个节点上的代理,功能包括与ResourceManager保持通讯、管理Container的生命周期、监控Container的资源使用、追踪节点健康状态、管理日志。
  2. 状态机管理
    NodeManager维护着三类状态机,分别是Application、Container、LocalizedResource。
    (1) Application状态机
    RM上有一个整个集群上Application信息列表,而一个NM上也有一个处在它自己节点的Application的信息列表,NodeManager上的Application状态机维护着NodeManager上Application的状态。
    这有利于对一个NM节点上的同一个Application所有的Container进行统一管理。
    (2) Container状态机
    Container状态机维护NodeManager上所有Container的生命周期。
    (3) LocalizedResource状态机
    LocalizedResource状态是NodeManager上用于维护一个资源生命周期的数据结构。资源包括文件、JAR包等。
  3. container生命周期管理
    NodeManager中的ContainerManager负责接收AM发来的请求以启动Container,Container的启动过程分三个阶段:资源本地化、启动并运行Container、资源清理。
    (1) 资源本地化
    资源本地化主要是进行分布是缓存工作,分为应用程序初始化和Container本地化。
    (2) 运行Container
    Container运行是由ContainerLauncher服务完成启动后,调用ContainerExecutor来进行的。主要流程为:将待运行的Container所需要的环境变量和运行命令写到Shell脚本launch_container.sh中,并将启动该脚本的命令写入default_container_executor.sh中,然后通过运行该脚本启动container。
    (3) 资源清理
    container清理是资源本地化的逆过程,是指当container运行完成后,NodeManager来回收资源。

h中,然后通过运行该脚本启动containr, container清理是资源本地化的逆过程,是指当container运行完成后, NodeManager来回收资源。