前言:yarn是hadoop2.x版本以后才有的
概念一:RM(resourceManager)+NM(nodeManager)
解析:yarn的资源管理通常通过1个RM+N个NM的模式,其中还有一个处理准备状态的RM,如果主的NM挂掉以后,处于准备状态的RM将会启动阶梯主RM的工作,防止错误的发生
RM(resouceManager)负责资源调度,主要有以下功能
(1)处理客户端请求(例如说启动或杀死一个Application)
(2)启动监控ApplicationMaster
(3)监控NM的状态
(4)系统的资源调度和分配
NM(nodeManager)整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况
(1)定期向RM汇报本节点的资源使用情况和各个container的运行状态
(2)接受并处理RM的container启停的各种命令
(3)单个节点的资源管理和任务管理
ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理
(1)数据切分
(2)为应用程序想RM申请资源,并分配给内部任务
(3)与NM通信以启停task,task是运行在container中的
(4)task的监控和容错
Container:对任务运行情况的描述(内存,CPU等)
YARN的执行流程:
(1)用户向YARN提交应用程序,其中包括启动ApplicationMaster命令、用户程序等
(2)ResourceManager为该应用分配第一个Container,并与对应的nodeManager通信,要求它在这个container中启动应用程序的ApplicationMaster
(3)ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到结束
(4)ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源
(5)一旦AppplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务
(6)NodeManager为任务设置好运行环境包括(环境变量、JAR包,二进制程序等)后,将任务启动命令写到一个脚本中,并通过改脚本启动任务
(7)各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态