走进 Yarn 资源管理和调度

281 阅读2分钟

1.YARN工作流程

y.jpg 一,用户向Yarn提交应用程序,其中包括用户程序、相关文件、启动ApplicationMaster命令、ApplicationMaster程序等。
二,Yarn中的ResourceManager为应用程序分配一个容器,在该容器中启动一个ApplicationMaster。
三,ApplicationMaster会首先向ResourceManager注册。
四,ApplicationMaster采用轮询的方式向ResourceManager申请资源。
五,ResourceManager向ApplicationMaster分配容器资源。
六,在容器中启动任务(运行环境,脚本)。
七,各个任务向其对应的ApplicationMaster汇报自己的运行状态和进度。
八,应用程序运行完毕后,ApplicationMaster与ResourceManager通信,要求注销和关闭自己。
2.主要包含三大模块:
ResourceManager :负责所有资源的监控、分配和管理;
ApplicationMaster: 负责每一个具体应用程序的调度和协调;
NodeManager :负责每一个节点的维护。
NodeManager 以心跳的方式向 ResourceManager 汇报资源使用情况(目前主要是 CPU 和内存的使用情况)。RM 只接受 NM 的资源回报信息,对于具体的资源处理则交给 NM 自己处理。
3.可以把 yarn 理解为相当于一个分布式的操作系统平台,而 mapreduce 等运算程序则相
当于运行于操作系统之上的应用程序,Yarn 为这些程序提供运算所需的资源(内存、cpu)
.yarn 并不清楚用户提交的程序的运行机制
.yarn 只提供运算资源的调度(用户程序向 yarn 申请资源,yarn 就负责分配资源)
. yarn 中的主管角色叫 ResourceManager
. yarn 中具体提供运算资源的角色叫 NodeManager
. yarn与运行的用户程序完全解耦,意味着yarn上可以运行各种类型的分布式运算程序,
比如 mapreduce、storm,spark,tez ……
. spark、storm 等运算框架都可以整合在 yarn 上运行,只要他们各自的框架中有符合
yarn 规范的资源请求机制即可
. yarn 成为一个通用的资源调度平台.企业中以前存在的各种运算集群都可以整合在一
个物理集群上,提高资源利用率,方便数据共享\