Hadoop--资源调度器Yarn | 青训营笔记

87 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

1. YARN基础架构

image.png

YARN 主要由 ResourceManagerNodeManagerApplicationMasterContainer 等组件构成。各组件的主要作用如下所示。

1)ResourceManager(RM)

  • 处理客户端请求
  • 监控NodeManager
  • 启动或监控ApplicationMaster
  • 资源的分配与调度

2) NodeManager(NM)

  • 管理单个节点上的资源
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令

3)ApplicationMaster(AM)

  • 为应用程序申请资源并分配给内部任务
  • 任务的监控与容错

4)Container

Container是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等

2. YARN工作机制

image.png

(1)MapReduce 程序提交到客户端所在的节点;

(2)YarnRunner 向 ResourceManager 申请一个 Application;

(3)RM 将该应用程序的资源路径返回给 YarnRunner;

(4)该程序将运行所需资源提交到 HDFS 上;

(5)程序资源提交完毕后,申请运行MRAppMaster(MapReduce程序运行中负责整个程序的过程调度及状态协调的实例进程);

(6)RM 将用户的请求初始化成一个 Task;

(7)其中一个 NodeManager 领取到Task任务;

(8)该 NodeManager 创建容器 Container,并产生 MRAppmaster;

(9)Container 从 HDFS 上拷贝资源到本地;

(10)MRAppmaster 向 RM 申请运行 MapTask 资源;

(11)RM 将运行 MapTask 任务分配给另外两个 NodeManager,另两个 NodeManager 分别领取任务并创建容器;

(12)MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager 分别启动 MapTask,MapTask对数据分区排序;

(13)MRAppMaster 等待所有 MapTask 运行完毕后,向 RM 申请容器,运行 ReduceTask;

(14)ReduceTask 向 MapTask 获取相应分区的数据;

(15)程序运行完毕后,MapReduce 会向 ResourceManager 申请注销自己。

3. YARN 调度器和调度算法

目前,Hadoop作业调度器主要有三种:先进先出调度器(FIFO)容量调度器(Capacity Scheduler)公平调度器(Fair Scheduler)

Apache Hadoop3.1.3 默认的资源调度器是Capacity Scheduler; CDH框架默认调度器是Fair Scheduler。

3.1 先进先出调度器(FIFO)

FIFO调度器(First In First Out): 单队列,根据提交作业的先后顺序,先来先服务。

image.png

优点: 简单易懂;
缺点: 不支持多队列,生产环境很少使用。

3.2 容量调度器(Capacity Scheduler)

Capacity Scheduler 是 Yahoo 开发的多用户调度器。

(1)容量调度器特点

image.png

1)多队列: 每个队列可配置一定的资源量,每个队列采用 FIFO调度策略;

2)容量保证: 管理员可为每个队列设置 资源最低保证 和 资源使用上限;

3)灵活性: 如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列;

4)多租户:
    支持 多用户共享集群 和 多应用程序 同时进行;
    为防止同一用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

(2)容量调度器资源分配算法

image.png

3.3 公平调度器(Fair Scheduler)

Fair Schedulere 是 Facebook 开发的多用户调度器。

(1) 公平调度器特点

image.png

(2) 公平调度器---缺额

image.png

  • 公平调度器设计目标是:在时间尺度上,所有作业获得公平的资源。某一个时刻一个作业应获资源和实际获取资源的差距叫做 "缺额";
  • 调度器会优先为缺额大的作业分配资源

(3) 公平调度器队列资源分配方式

image.png