其他分享
首页 > 其他分享> > YARN工作流程

YARN工作流程

作者:互联网

YARN工作流程

1.基本架构

 YARN总体上仍然是Master/Slave结构,ResourceManager为Master,NodeManager为Slave。ResourceManager负责对每个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以用一定资源的任务。
 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。

(1)ResourceManager
 全局的资源管理器,负责整个系统的资源管理和分配,由调度器(Scheduler)和应用程序管理器(Applications Manager)组成。
 调度器根据容量、队列等限制条件,将系统中的资源分配给每个正在运行的应用程序。其仅根据各个应用的资源需求进行资源分配,资源分配单位为Container。
 应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协调资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它。

(2)ApplicationMaster
 用户提交的每个应用程序都包含一个ApplicationMaster,主要功能包括:
 1.与ResourceManager协商以获取资源。
 2.将得到的任务进一步分配给内部的任务。
 3.与NodeManager通信以启动/停止任务。
 4.监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

(3)NodeManager
 NodeManager是每个节点上的资源和任务管理器,它会定时第向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态,还接收并处理来自ApplicationManager的Container启动/停止等各种请求。

(4)Container
 Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当ApplicationMaster向ResourceManager申请资源时,得到的便是用Container表示的。
 YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。Container不同于MapReduce1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。

2.工作流程

 运行在YARN上的应用程序主要分为两类:短应用程序和长应用程序。短应用程序是指一定时间内科运行完成并正常退出的应用程序。长应用程序是指不出意外,永不终止运行的应用程序,通常是一些服务。
 尽管这两类应用程序作用不同,一类直接运行数据处理程序,一类用于部署服务,但是它们运行在YARN上的流程是相同的。
 当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序。第一个阶段是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直至运行完成。

 YARN的工作流程分为如下几个步骤:
 1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
 2.ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
 3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束。
 4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
 5.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
 6.NodeManager为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
 7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可以随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
 8.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。

标签:Container,ResourceManager,流程,ApplicationMaster,应用程序,工作,YARN,NodeManager
来源: https://blog.csdn.net/weixin_43559950/article/details/120656228