当前位置:   article > 正文

YARN架构设计与工作原理_yarn 原理

yarn 原理

1、YARN产生背景

Apache Hadoop另一种资源协调者(YARN)是一种新的Hadoop资源管理器,是一个通用的资源管理系统,可为上层应用提供统一的资源管理和作业调度服务,它的引入为集群在资源利用、资源的统一管理调度和数据共享等方面带来了巨大的好处。

YARN产生的原因主要是为了解决原MapReduce框架(Hadoop1.0中的计算框架,简称为MRv1)的不足。

MapReduce1.0系统架构

MapReduce1.0架构缺陷

(1)扩展性差

JobTracker 同时兼备了资源管理和作业控制两个功能,严重制约了Hadoop 集群扩展性。

(2)资源利用率低

MRv1采用基于slot的粗粒度的资源分配模型,包含Map slot和Reduce slot。某个任务用不完的资源其他任务也不能用,因为map和reduce的资源完全不能共享的。当一个作业刚提交时,只会运行Map Task,此时Reduce Slot 闲置。

(3)通用性差

随着互联网高速发展导致数据量剧增,MapReduce 这种基于磁盘的离线计算框架已经不能满足应用要求,从而出现了一些新的计算框架以应对各种场景,包括内存计算框架、流式计算框架和迭代式计算框架等,而MRv1 不能支持多种计算框架并存。

(4)单点故障

MRv1 采用了master/slave 结构,其中master 存在单点故障问题,一旦它出现故障将导致整个集群不可用。

总结:

  • 扩展性差:兼具资源管理和作业调度

  • 资源利用率低:基于粗粒度slot资源分配

  • 通用性差:不支持多种计算框架

  • 单点故障:master没有实现高可用

2、 YARN是什么

YARN 是Hadoop2.0版本新引入的资源管理系统,直接从MR1演化而来。

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

核心思想:将MR1中JobTracker的资源管理和作业调度两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。

  • ResourceManager负责整个集群的资源管理和调度。

  • ApplicationMaster负责应用程序相关的事务,比如任务调度、任务监控和容错等。

3、 YARN的作用

img

从上图可以看出YARN在Hadoop生态体系中的位置,YARN作为一种通用的资源管理系统,可以让上层的多种计算框架(如MapReduce、Spark、Filnk等)共享整个集群资源,提高集群的资源利用率,而且还可以实现多种计算模型之间的数据共享。

4、 YARN的基本架构

从YARN的架构图来看,YARN主要由资源管理器(ResourceManager)、节点管理器(NodeManager)、应用程序管理器(ApplicationMaster)和响应的容器(Container)构成。

(1)ResourceManager

ResourceManager是一个全局的资源管理器,它负责整个系统的资源管理和调度,主要由两个组件构成,一个是资源调度器(ResourceScheduler),另一个是全局应用程序管理器(ApplicationsManager)。

①ResourceScheduler

ResourceScheduler是一个纯调度器,不从事任何与应用程序相关的工作。它将系统中的资源分配给各个正在运行的程序,不负责监控或跟踪应用的执行状态,也不负责重新启动因应用程序失败或硬件故障而导致的任务失败。这些工作都由应用程序对应的ApplicationsManager完成。调度器是一个可插拔的组件,用户可以根据自己的需要设计新的调度器,YARN提供了很多内置的调度器。

②ApplicationsManager

ApplicationsManager负责整个系统中所有应用程序的管理。包括应用程序的提交、与调度器协商资源来启动ApplicationMaster、监控ApplicationMaster运行状态,并在失败的时候通知它等。具体的任务则交给ApplicationMaster去管理,所以ApplicationsManager相当于一个项目经理的角色。

(2)ApplicationMaster

用户提交的每一个应用程序都包含一个ApplicationMaster,它主要是与ResourceManager协商获取资源,并将得到的资源分配给内部的具体的任务。ApplicationMaster负责与NodeManager通信以启动或停止具体的任务,并监控该应用程序所有任务的运行状态,当任务运行失败时,重新为任务申请资源并重启任务。

(3)NodeManager

NodeManager作为YARN架构中的从节点,是整个作业运行的一个执行者,是每个节点上的资源和任务管理器。NodeManager会定时向ResourceManager汇报本节点的资源使用情况和各个容器(Container)的运行状态,接收并处理来自ApplicationMaster容器的启动和停止等请求。

(4)Container

Container是对资源的抽象,封装了节点的多维度资源,如封装了内存、CPU、磁盘、网络等。当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster返回的资源就是Container,得到资源的任务只能使用该Container所封装的资源,Container是根据应用程序的需求动态生成的。

5、 YARN的工作原理

(1)YARN上运行的应用程序

主要分为两类

  • 短应用程序

短应用程序是指一定时间内(可能是秒级、分钟级、小时级或天级等)可运行完成并正确退出的应用程序,如MapReduce作业、TezDAG 作业等)

  • 长应用程序

长应用程序是指不出意外永不终止运行的程序,通常是一些服务,如Storm Service(包括Nimbus和Supervisor两类服务)、HBase Service(包括HMaster和HRegionServer两类服务)等,而它们本身作为一个框架提供了供用户使用的编程接口。

(2)YARN的工作原理

尽管长、段两类应用程序的作用不同,短应用程序直接运行数据处理程序,长应用程序用于部署服务(服务之上再运行数据处理程序),但两者运行在YARN上的原理是相同的。

YARN的工作原理如下图:

①客户端(Client)向ResourceManager提交一个作业,作业包括ApplicationMaster程序、启动ApplicationMaster的程序和用户程序(如MapReduce)。

②ResourceManager会为该应用程序分配一个Container,它首先会跟NodeManager进行通信,要求它在这个Container中启动应用程序的ApplicationMaster。

③ApplicationMaster一旦启动,它首先会向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后将为各个任务申请资源并监控它们的运行状态,直到任务结束。它会以轮询的方式通过RPC协议向ResourceManager申请和领取资源,一旦ApplicationMaster申请到资源,它会与NodeManager进行通信,要求它启动并运行任务。

④各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,这样会让ApplicationMaster随时掌握各个任务的运行状态。一旦任务失败,ApplicationMaster就会重启该任务,重新申请资源。应用程序完成后,ApplicationMaster就会向ResourceManager注销并关闭进程,在应用程序整个运行过程中,可以通过RPC协议向ApplicationMaster查询应用程序当前的运行状态,当然在YARN的Web界面也可以看到整个作业的运行状态。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号