Hadoop理论课-第四章


第四章 YARN

YARN 简介

是针对MapReduce1 的缺点开发的

1
2
3
设计 YARN 的最初目的是改善 MapReduce 的实现。后来 YARN 演变为一种资源调度框架,
具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(如
Spark)。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

MapReduce1工作流程

GnMq0J.png

MapReduce1 当任务过多时,不利于系统扩展;难以支持其他的框架;JobTracker单点故障

1
2
3
4
5
6
7
8
9
10
11
MapReduce 1 的具体工作过程可描述如下。
(1)一个客户端向一个 Hadoop 集群发出一个请求。
(2)JobTracker 与 NameNode 联合将工作分发到离它们所处理的数据尽可能近的位置。
NameNode 提供元数据服务来执行数据分发和复制。JobTracker 将任务安排到一个或多个
TaskTracker 的可用资源作业槽(Slot)中。
(3)TaskTracker 与 DataNode 一起对来自 DataNode 的数据执行 Map 和 Reduce 任务。
(4)当 Map 和 Reduce 任务完成时,TaskTracker 会告知 JobTracker。
(5)JobTracker 确定所有任务何时完成并最终告知客户端作业已完成。

通过上述流程,可以看出 JobTracker 有多忙:一是它需要负责作业调度(把任务安排给
TaskTracker),二是负责任务的进度监控(跟踪任务、重启失败的任务、记录任务流水)。

MapReduce2

GnQhHH.png

YARN 进程

ResourceManager

NodeManager

什么是YARN

YARN :Yet Another Resource Negotiator,另一种资源协调者。
最初是为了改善MapReduce的实现,但也是一种资源调度框架,具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(如Spark)。
它的引入为集群在利用率、资`源统一管理和数据共享等方面带来了巨大好处。

YARN架构

GnUQz9.png

容器 Container

Container是YARN中资源的抽象,它封装了某个节点上的多维度资源。YARN 会为每个任务分配 Container。

YARN中资源包括内存、CPU、磁盘输入输出等等

ResourceManager

负责资源分配和管理

主要由调度器和应用程序管理器两个组件组成

  • 调度器(Scheduler):
    调度器根据资源情况为应用程序分配封装在Container中的资源。
  • 应用程序管理器(Application Manager):
    应用程序管理器负责管理整个系统中所有应用程序

NodeManager

是每个节点上的资源和任务管理器

  • 定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;
  • 接收并处理来自ApplicationManager的Container启动/停止等请求。

ApplicationMaster(主应用)

ApplicationMaster是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。
用户提交的每一个应用程序均包含一个ApplicationMaster。
主要功能包括:
1)、与ResourceManager调度器协商以获取抽象资源(Container);
2)、负责应用的监控,跟踪应用执行状态,重启失败任务等;
3)、与NodeManager协同工作完成Task的执行和监控。

YARN中应用运行机制(流程)

GnDCGT.md.png

1
2
3
4
5
6
7
8
(1)Client 向 ResourceManager 提交 YARN Application;
(2)ResourceManager 初始化(Start)Container;
(3)在 NodeManager 的协助下启动(launch)Container。若是首次启动,Container 里面包含
ApplicationMaster;
(4)ApplicationMaster 计算资源够不够?如果够,则自己处理;
(5)如果资源不够,ApplicationMaster 向 ResourceManager 申请资源;
(6)ApplicationMaster 拿到资源后,开始启动 Container;
(7)在 NodeManager 的协助下,启动 Container,Application 运行。

YARN中任务进度监控

GnD9iV.md.png

1
2
3
4
YARN 中任务进度的监控与 MapReduce 1 中任务进度的监控相比有了很大的变化,由各任务
直接向自己的 ApplicationMaster 报告进度和状态。ApplicationMaster 将收集的进度和状态进行统
计,汇聚成作业视图。客户端主动从 ApplicationMaster 获取状态,从而获取整个集群的进度情

MapReduce1与YARN组成对比

1
2
可以看出,在 YARN 中,与 JobTracker 不同的是,ResourceManager 与
ApplicationMaster 分离,ApplicationMaster 承担了任务进度监控的工作。这一主要架构变化带来了MapReduce 2 性能的显著提升,按官方称,MapReduce 2 可以支持 10000 个节点,100000 个任务。
GnDzOH.png
Yarn对MapReduce运行性能提升

主要特点: ResourceManager与Application Master分离

性能提升:可以扩展支持10,000个节点,100,000个任务

YARN调度器

FIFO Scheduler

最简单的调度器,任务先提交先执行

Capacity Scheduler

分成多个队列,每个队列占用一定资源,可以看作是FIFO Scheduler的多队列版本

每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势

注意:如果不限制某队列最大容量,则运行过程中,它可以占用全部资源。
GI7Jx0.png

Fair Scheduler

假设每个任务具有相同的优先级,平均分配系统的资源

单队列

GnyELQ.md.png

多队列

Gnyeds.md.png

三种调度器比较

GI7G2q.md.png


世界上那些最容易的事情中,拖延时间最不费力。

本文标题:Hadoop理论课-第四章

文章作者:TTYONG

发布时间:2020年03月30日 - 16:03

最后更新:2023年07月04日 - 10:07

原始链接:http://tianyong.fun/hadoop%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%BA%94%E7%94%A8-%E7%AC%AC%E5%9B%9B%E7%AB%A0YARN(%E7%90%86%E8%AE%BA%E8%AF%BE).html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%