ResourceManager&NodeManager的功能介绍
- ResourceManager基本介绍
ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个NodeManager的资源汇报信息,并把这些信息按照一定的策略分配给各个ApplicationMaster。
- RM的职能
(1)与客户端交互,处理客户端的请求。
(2)启动和管理AM,并在它运行失败时候重新启动它。
(3)管理NM,接收来自于NM的资源汇报信息,并向NM下达管理指令。
(4)资源管理和调度,接收来自于AM的资源请求,并为它分配资源。 - 启动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注册。 - 声请和分配container
AM向RM请求资源和RM为AM分配资源是两个阶段的循环过程:
阶段一:AM请求资源请求并领取资源的过程,这个过程是AM发送请求、RM记录请求。
阶段二:NM向RM汇报各个Container运行状态,如果RM发现它上面有空闲的资源就分配给等待的AM。
- Container超时
YARN里有两种Container:运行AM的Container和运行普通任务的Container。
(1) RM为要启动的AM分配Container后,会监控Container的状态,如果指定时间内AM还没有在Container上启动的话,Container就会被回收,AM Container超时会导致Application执行失败。
(2) 普通超时会进行资源回收,但是不会自动在其他资源上重试,而是通知,由决定是否重试。 - 安全管理
Hadoop的安全管理是为了更好地让多用户在共享Hadoop集群环境下安全高效地使用集群资源。系统安全机制由认证和授权两大部分构成,Hadoop2.0中的认证机制采用Kerberos和Token两种方案,而授权则是通过引入访问控制表(Access Control List,ACL)实现的。 - 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分为手动模式和自动模式,手动模式是指由管理员通过命令进行主备切换,通常用于服务升级;自动模式可以自动切换但是存在潜在危险。
- NodeManager功能介绍
- NodeManager基本介绍
NM是单个节点上的代理,功能包括与ResourceManager保持通讯、管理Container的生命周期、监控Container的资源使用、追踪节点健康状态、管理日志。 - 状态机管理
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包等。 - 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来回收资源。