Yarn---统一资源管理系统

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

一、Yarn的出现背景

        由于MRv1在扩展性、可靠性、资源利用率和多框架等方面存在明显的不足,概括为以下几个方面:

        (1)扩展性差。在MRv1中,JobTracker同时兼备了资源管理和作业控制两个功能,这成为系统的最大瓶颈,严重制约了Hadoop集群的扩展性;

        (2)可靠性差。MRv1采用了Master/Slave结构,其中Master存在单点故障问题,一旦它出现故障将导致整个系统不可用;

        (3)资源利用率低。MRv1采用了基于槽位的资源分配模型,槽位是一种粗粒度的资源划分单位,通常一个任务不会用完槽位对应的资源,且其他任务也无法使用这些空闲资源。此外,Hadoop将槽位分为Map Slot和Reduce Slot两种,且不允许它们之间共享,常常导致一种槽位资源紧张而另一种槽位处于空间状态(如作业刚刚提交时,只会运行Map Task,Reduce Task就处于闲置状态);

        (4)无法支持多种计算框架。MapReduce基于磁盘的离线计算框架已经不能满足应用要求,而新出现的计算框架,如基于内存的计算框架Spark、流式计算框架Storm等等,MRv1不能支持多种计算框架并存。

        Hadoop1.0即第一代Hadoop由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。Hadoop2.0即第二代Hadoop为克服Hadoop1.0中的不足:针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现。


        这样就使得框架从“一种计算框架一个集群”的模式转变为“共享集群”的模式,这样的好处是:

        (1)资源利用率大大提高。一种计算框架一个集群,往往会由于应用程序数量和资源需求的不均衡性,使得在某段时间有些计算框架集群资源紧张,而另外一些集群资源空闲。共享集群模式则通过多种框架共享资源,使得集群中的资源得到更加充分的利用;

        (2)运维成本大大降低。共享集群模式使得少数管理员就可以完成多个框架的统一管理;

        (3)共享集群的模式也让多种框架共享数据和硬件资源更为方便。

二、Yarn的基本架构

        Yarn是Hadoop2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicatioinMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。

        Yarn总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对NodeManager上资源进行统一管理和调用。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。Yarn基本组成如下图所示:


        1、ResourceManager(RM)全局的资源管理器,负责整个系统的资源管理和分配,它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager,ASM);

        2、NodeManager(NM)每个节点上的资源和任务管理器,一方面它会定时地向RM汇报本节点上的资源使用情况和各个 Container的运行状态,另一方面它接收并处理来自AM的Container启动/停止等各种请求;

        3、ApplicationMaster(AM)用户提交的每个应用程序均包含一个AM,主要功能包括:a、与RM调度器协商以获取资源(用Container表示);b、将得到的任务进一步分配给内部的任务;c、与NM通信以启动和停止任务;d、监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务;

       4、Container是Yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM和RM申请资源时,RM为AM返回的资源便是用Container表示的。Yarn会为每个任务分配一个Conatiner,且该任务只能使用该Container中描述 的资源。需要注意的是Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。


三、参考文献

1、《Hadoop技术内幕---深入解析YARN架构设计与实现原理》

2、http://www.chinacloud.cn/show.aspx?id=23045&cid=12

3、http://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/

4、http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

5、http://book.51cto.com/art/201312/422026.htm

6、http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012050154/article/details/52352931
个人分类: BigData Framework
上一篇设计模式之观察者模式
下一篇Hadoop1.0与Hadoop2.0的区别
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭