走进 YARN 资源管理和调度| 青训营笔记

206 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第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中构建多个队列,每个队列是公平的共享资源的,还可以同时运行多个程序,支持一个队列中并发运行多个程序,让每个程序都能拿到资源,也支持队列间的资源的动态抢占。