文章目录
- 前言
- 一、Yarn是什么
- 二、Yarn由什么组成
- 三、Yarn用来做什么
- 四、Yarn的优势是什么
- 五、Yarn解决了什么问题
- 总结
前言
在前面我们可以得出Yarn是Hadoop生态圈中一个重要得组成部分,主管资源管理,但是具体是如何进行资源管理的,却是需要进行探索的事,它又哪几部分组成,又由什么演变而来,各部分又有什么作用,它的产生又带来了哪些好处。
一、Yarn是什么
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
二、Yarn由什么组成
主要由 ResourceManager、ApplicationMaster、NodeManager、container组成:
1、ResourceManager(RM)
YARN的分层结构是ResourceManager
RM控制整个集群,管理应用程序向基础计算机资源的分配
RM将各个资源安排给nodeManager
RM与ApplicationMaster一起分配资源
RM与NodeManager一起启动和监视他们的基础应用程序
作用:
1)处理客户端请求
2)启动或监控ApplicationMaster
3)监控nodemanager
4)资源分配与调度
2、ApplicationMaster(AM)
AM管理在YARN内运行的应用程序的实例
AM负责协调来自RM的资源
AM通过nodeManager 监视 容器执行和资源调度
作用:
1)负责数据切分
2)为程序申请资源并分配给内部任务
3)任务的监视与容错
3、NodeManager(NM)
NM 管理YARN集群中的每个节点
NM提供针对集群中的每个节点的服务
NM从监督对一个容器的终生管理到监视资源,跟踪节点健康
作用
1)管理单个节点上的资源
2)处理来自RM的命令
3)处理来自AM的命令
4、Container
Container 是 YARN中的资源抽象 封装了某个节点上的多维度资源(内存 cpu 磁盘 网络等)
当AM向RM申请资源时,RM为AM返回的资源便是Container表示的
YARN会为每个任务分配一个Container,且该任务只能使用Container中描述的资源
作用:
对任务运行环境进行抽象
封装CPU,内存等多维度资源以及环境变量,启动命令等任务运行的相关信息
三、Yarn用来做什么
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
YARN 的基本思想是将 JobTracker 的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的 ResourceManager(RM)和若干个针对应用程序的 ApplicationMaster(AM)。这里的应用程序是指传统的 MapReduce 作业或作业的 DAG(有向无环图)。
四、Yarn的优势是什么
a、YARN的设计减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了,更安全、更优美。
b、在新的Yarn中,ApplicationMaster是一个可变更的部分,用户可以对不同的编程模型写自己的AppMst,让更多类型的编程模型能够跑在Hadoop集群中。
c、对于资源的表示以内存为单位,比之前以剩余slot数目更加合理。
d、MRv1中JobTracker一个很大的负担就是监控job下的tasks的运行状况,现在这个部分就扔给ApplicationMaster做了,
而ResourceManager中有一个模块叫做ApplicationManager,它是监测ApplicationMaster的运行状况,如果出问题,会在其他机器上重启。
e、Container用来作为YARN的一个资源隔离组件,可以用来对资源进行调度和控制。
五、Yarn解决了什么问题
解决旧架构MRv1的单点问题和资源利用率问题,同时也让在其上运行的应用不再局限于 MapReduce 形式
基于上述问题,Hadoop在2.0版本上推出了YARN (Yet Another Resource Negotiator)。
YARN的核心思想是将资源管理和Job的调度/监控进行分离。
YARN就是将 JobTracker 的职责进行拆分,将资源管理和任务调度监控拆分成独立的进程:
一个全局的资源管理和一个每个作业的管理(ApplicationMaster)
ResourceManager 和 NodeManager 提供了计算资源的分配和管理,而 ApplicationMaster 则完成应用程序的运行
总结
在旧架构MRv1不能满足大多数任务处理时,Yarn应运而生,Yarn主要的核心思想是将资源管理以及Job的调度/监控进行分离。YARN就是将 JobTracker 的职责进行拆分,将资源管理和任务调度监控拆分成独立的进程:一个全局的资源管理和一个每个作业的管理(ApplicationMaster)。ResourceManager 和 NodeManager 提供了计算资源的分配和管理,而 ApplicationMaster 则完成应用程序的运行。