-
yarn 产生背景
- mapreduce 存在的问题:单点故障 & 节点压力大不易扩展
- jobtracker 负责资源管理和作业调度
- tasktracker
-
yarn 架构
-
) ResourceManager: RM
(1) 整个集群同一时间提供服务的ResourceManager(RM)只有一个,负责集群资源的统一管理和调度 (2)处理客户端的请求:提交一个作业 | 杀死一个作业 (3) 监控我们的NodeManager(NM),一旦某个 NodeManager(NM)挂了,那么该NodeManager(NM) 上运行的任务需要告诉我们的ApplicationMaster(AM)来如何进行处理
-
) NodeMagnager: NM
(1) 整个集群中有多个,负责自己本身节点资源管理和使用 (2) 定时向ResourceManager(RM)回报本节点的资源使用情况 (3) 接收并处理来自ResourceManager(RM)的各种命令:启动Container (4) 处理来自ApplicationMaster(AM)的命令 (5) 处理来自单个节点资源管理
-
) ApplicationMaster: AM
(1) 每个应用程序对应一个:MR Spark 负责应用程序的管理 (2) 为应用程序向RM申请资源(core memory)分配给内部的task (3) 需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
-
) Container
(1) 封装了所需要的资源的一个容器。
-
-
yarn 执行流程
1.) client向yarn提交一个应用程序
2.) resourceManager为该应用程序分配一个Container,与对应的nodeManager进行通信, 要求它在此nodeManager的container中启动applicationMaster
3.) applicationMaster向resourceManager注册,这样用户可以直接通过resourceManager查看应用程序的运行状态
4.) applicationMaster为各个任务向resourceManager请求资源
5.) 请求到资源后与nodeManager进行通信,要求启动任务
6.) nodeManager启动各个task任务
7.) 各个任务task向applicationMaster报告状态和进度
8.) task任务完成后applicationMaster向resourceManager请求注销自己
image.png
网友评论