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

83 阅读2分钟

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

1、运行在[YARN]上的MapReduce应用程序

image.png

2、运行在YARN上的Storm应用程序

image.png

3、YARN应用程序基本构成

①客户端 :

主要作用是提供一系列访问接口供用户与YARN交互,包括提交Application、查询Application运行状态,修改Application属性(比如优先级)等。 ②ApplicationMaster: 向ResourceManager申请资源(以Container形式表示); 与NodeManager通信以启动各个Container(Task); 监控各个任务运行状态,并在失败时为其重新申请资源。

4、以MapReduce应用程序为例

MapReduce客户端: 将MapReduce作业提交到YARN上; 查询MapReduce作业运行状态; 管理MapReduce作业,比如杀死MapReduce作业,修改其优先级等。

ApplicationMaster(MRAppMaster): 根据描述,将作业分解成Map Task和Reduce Task; 向ResourceManager为Map/Reduce Task申请资源; 与NodeManager通信以启动Task; 监控各个任务运行状态,并在失败时为其重新申请资源。

5、MapReduce On YARN和MapReduce 程序区别

MapReduce On YARN(由专业人员开发): 为MapReduce作业运行在YARN上提供跟一个通用的运行时环境; 需要与YARN的各个服务交互,完成较为复杂的功能; 由客户端和ApplicationMaster两部分组成。 MapReduce程序(由普通用户开发): 用户使用编程API(包括新旧两种)编写的应用程序; 由Mapper、Reducer、Combiner等组件构成; 程序提交到YARN上后,将由已经写好的ApplicationMaster服务对其进行分解和调度。

6、YARN应用程序开发流程-以MapReduce应用程序为例

image.png

7、YARN的任务调度

  • 什么是调度?

    • 如果我们向YARN中提交运行了多个程序
    • YARN中整个集群的资源是固定
    • 谁先执行,谁后执行,大家怎么分配资源

调度类型:三种

FIFO:先进先出

YARN中构建一个队列【管道:一头进,一头出】

  • 所有提交的任务都按照提交的时间放到队列中
  • 先放入的程序,享有整个YARN中的所有资源,哪怕你用不了,那也是你的
  • 直到先放进去的程序运行完成,才会运行第二个程序

特点

单队列,先进先出

运行的程序,享有所有资源

程序不能并行也不能并发

并行:多个程序在不同的队列中同时运行

并发:在一个队列中多个程序同时运行 这种方式不会选用的

Capacity:容量调度机制

YARN中构建多个队列,每个队列是FIFO

将整个YARN的资源分配到不同的队列中

YARN:24core 24GB

队列1:12core 12GB

队列2:12Core 12GB

运行程序时,可以指定将程序提交到哪个队列中运行