YARN是hadoop2.0中的资源管理系统,他的基本设计思想是将MRv1中的JobTracker的拆分成了两个独立的服务:一个全局的资源管理器的ResourceManager和每个应用程序特有的ApplicationMaster。
- --ResourceManager负责整个系统的资源管理和分配。
- --ApplicationMaster负责单个应用程序的管理。
Yarn总体上仍然是Master/Slave结构
- --ResourceManager为Master,负责对各个NodeManager上的资源进行统一管理和调度。
- --当用户提交一个应用程序时,需要提供一个用于跟踪和管理这个程序的ApplicationMaster,他负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务。
- --由于不同的ApplicationMaster被分布到不同的节点上,因此他们之间不会相互影响。
YARN组成结构ResourceManager
- ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要有两个组件构成:
- --调度器:调度器根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序。资源分配单位用一个抽象概念“资源容器”表示。
- --应用程序管理器:ApplicationManager负责管理整个系统中所有应用程序,包扣应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败是重新启动它等。
YARN组成结构ApplicationMaster
- 用户提交的每个应用程序均包含了1个ApplicationMaster,主要功能包括:
- 与ResourceManager调度器协商以获取资源,
- 与NodeManager通信以启动/停止任务。
- 监控所有任务运行的状态,并在任务运行失败时重新为任务申请资源已重启任务。
YARN组成结构NodeManager
- NodeManager是每个节点上的资源和任务管理器:
- 一方面,他定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态。
- 另一方面,他会接收并处理来自ApplicationMaster的Container启动/停止等各种请求。
YARN组成结构Container
- Container是yarn中的资源抽象,他封装了某个节点上的多维度资源,入内存、CPU、磁盘、网络等。
- 当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster返回的资源便是用Container表示的。YARN会为每个人物分配一个container,且该任务只能使用该container中描述的资源。
YARN工作流程
- 当用户想YARN中提交一个应用程序后,YARN将两个阶段运行该应用程序:
- 第一阶段是启动ApplicationMaster,
- 第二阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完毕。
详细流程1
- 用户向YARN中提交应用程序,包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
- ResourceManager为该应用程序分配第一个container,并与对应的NodeManager通信,要求他在这个container中启动应用程序的ApplicationMaster。
- ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后她将为各个任务申请资源,并监控它的运行状态,直到运行结束。
详细流程2
- ApplicationMaster采用轮训的方式通过RPC协议向ResourceManager申请和领取资源。
- 一旦ApplicationMaster申请到资源后,便于对应的NodeManager通信,要求他启动任务。
- NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
详细路程3
- 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败是重新启动任务。
- 在应用程序运行过程中,用户可以随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
- 应用程序运行完毕后,ApplicationMaster向ResourceManager注销并关闭自己。