Yarn架构 + 执行流程


学习笔记
参考文章:YARN的架构及原理----详细
参考文章:Yarn的运行原理(执行流程)

一、Yarn架构

1)ResourceManger:RM
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理的调度
1、处理客户端的请求
提交一个作业、杀死一个作业
2、启动和监控ApplicationMaster
3、监控nodemanager
一旦某个NodeManger挂了,那么该NodeManger上运行的任务需要告诉Application如何处理
4、资源的分配和调度

2)NodeManger(NM)
整个集群中有多个NodeManger,每台机器对应一个NM,监控 Containers 的资源使用情况并报告给RM,定时向RM发送心跳以检查健康状态
1、单个节点的资源管理
2、处理来自ResouceManager的命令
3、处理来自ApplicationMaster的命令
4、定时向ResouceManager汇报本节点的资源使用情况(心跳数据包)

3)ApplicationMaster:AM
每个应用程序对应一个AM,为应用程序向ResourceManger申请(core\memory)用于执行task的资源,和NM一起监控执行task的运行情况
需要与NodeManger通信:启动/停止task,task是运行在container里面,ApplicationMaster也是运行在Container里面
1、为应用程序申请资源,并分配给内部任务
2、任务的监控和容错

4)Container
1、封装了CPU、Memory等资源的一个容器
2、是一个运行任务的抽象

5)Client
1、提交作业
2、查看作业的运行进度
3、杀死作业

二、Yarn运行流程

执行流程:
1、客户端向ResourceManger提交程序
2、ResourceManger向NM中分配第一个Container,并在该Container中启动AM
3、ApplicationMaster向ResourceManger注册,ApplicationMaster在ResourceManger注册完之后,用户可以直接通过ResourceManger查看应用程序的运行状态(然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束)
4、ApplicationMaster向ResourceManger申请资源(采用轮询的方式通过RPC协议向ResourceManger申请和领取资源,资源的协调通过异步完成)
5、ApplicationMaster申请到资源后向 Node Manager 请求启动 Container 去执行 task
6、NodeManger为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务
7、各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败事重新启动任务
8、应用程序运行完成后,ApplicationMaster向ResourceManger注销并关闭自己

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章