Yarn的ResourceManager&NodeManager的功能介绍

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

      Yarn的ResourceManager&NodeManager的功能介绍

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

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

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

    4. Container超时

      YARN里有两种Container:运行AM的Container和运行普通任务的Container。

      (1) RM为要启动的AM分配Container后,会监控Container的状态,如果指定时间内AM还没有在Container上启动的话,Container就会被回收,AM Container超时会导致Application执行失败。

      (2) 普通超时会进行资源回收,但是不会自动在其他资源上重试,而是通知,由决定是否重试。

    5. 安全管理

      Hadoop的安全管理是为了更好地让多用户在共享Hadoop集群环境下安全高效地使用集群资源。系统安全机制由认证和授权两大部分构成,Hadoop2.0中的认证机制采用Kerberos和Token两种方案,而授权则是通过引入访问控制表(Access Control List,ACL)实现的。

    6. 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分为手动模式和自动模式,手动模式是指由管理员通过命令进行主备切换,通常用于服务升级;自动模式可以自动切换但是存在潜在危险。

  2. 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来回收资源。