> 文章列表 > YARN运行流程

YARN运行流程

YARN运行流程

YARN是Hadoop资源管理器,他是一个通用资源管理平台和调度平台,可为上层应用提供统一的资源管理和调度,MapReduce等运算程序则相当于运行于操作系统上的应用程序,YARN为这些程序提供运算所需的资源内存、cpu。

YARN并不清楚用户提交的程序的运行机制
YARN只提供运算资源的调度(用户程序向YARN申请资源,YARN就负责分配资源)
YARN中的主管角色叫ResourceManager
YARN具体提供运算资源的角色叫做NodeManager
YARN与运行的用户程序完全解耦,意味着YARN上可以运行各种类型的分布式运算程序,比如MapRuduce、storm、Spark、
Spark、storm等原生框架都可以整合在YARN上运行,只要他们各自的框架中符合YARN过程的资源请求机制即可
YARN主要包含三大模块 :ResourceMannger、NodeManager、ApplicationMaster
    ResourceMannager负责所有资源的监控,分配和管理是一个全局的资源管理系统
    NodeManager负责每一个节点的维护,以心跳的方式向ResourceManager汇报资源使用情况(目前主要是内存和cpu的使用情况)RM只接受NM的资源汇报信息,对于具体的资源处理则交给NM自己处理
    ApplicationMaster负责每一个具体应用程序的调度和协调,与NM通信以启动和停止任务,监控所有的任务运行状态,并在任务失败的时候为其重新去申请资源以重启任务。

YARN运行流程

1,Client向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。
2,ResourceManager启动一个Containe来运行ApplicationMaster
3,启动中的ApplicationMaster向ResourceManager祖册自己,启动成功后与RM保持心跳
4,ApplicationMaster 向 ResourceManager 发送请求,申请相应数目的 Container。
5,ResourceManager 返回 ApplicationMaster 的申请的 Containers 信息。申请成功的Container,由 ApplicationMaster 进行初始化。Container 的启动信息初始化后, AM与对应的 NodeManager 通信,要求 NM 启动 Container。 AM 与 NM 保持心跳,从而对 NM上运行的任务进行监控和管理。
6,Container 运行期间, ApplicationMaster 对 Container 进行监控。 Container 通过 RPC协议向对应的 AM 汇报自己的进度和状态等信息
7,Client 直接与 AM 通信获取应用的状态、进度更新等信息。
8,应用运行结束后, ApplicationMaster 向 ResourceManager 注销自己,并允许属于它的Container 被收回。