这是我参与「第四届青训营 」笔记创作活动的第16天
YARN的介绍
YARN是一个分布式的资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
YARN的核心模块
Resource Manager主要职责
RM负责集群所有资源的统一管理和分配, 接收各节点汇报信息并按照一定策略分配给各个任务。
- 与客户端交互
- 启动和管理所有AM
- 管理所有NM
- 资源管理与调度
- 组织资源(资源池)
- 组织任务(队列)
- 接收资源请求
- 分配资源
Node Manager主要职责
NM是节点代理,从AM接受命令(启停Container) 并执行,通过心跳方式向RM汇报节点状态并领取命令(清理Container)
- 与RM交互
- 心跳汇报节点状态
- 领取RM下达的命令
- 与AM交互
- 启动容器
- 停止容器
- 获取容器状态
补充
ApplicationMaster的主要职责
每个应用/作业对应一个,负责应用的监控,跟踪应用执行状态,重启失败任务等。
Container的主要职责
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
YARN的任务调度
1.FIFO(先进先出): YARN中构建一个单队列,直到先放进去的程序运行完成,才会运行第二个程序。程序不能并行也不能并发。
2.Capacity(容量调度机制): YARN中构建多个队列,每个队列是FIFO。将整个YARN的资源分配到不同的队列中,运行程序时,可以指定将程序提交到哪个队列中运行,且支持资源的动态抢占。
3.Fair(公平调度机制): YARN中构建多个队列,每个队列是公平的共享资源的,还可以同时运行多个程序,支持一个队列中并发运行多个程序,让每个程序都能拿到资源,也支持队列间的资源的动态抢占。