一 概述

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

   
                                           


YARN最初是为了修复MapReduce实现里的明显不足,并对可伸缩性(支持一万个节点和二十万个内核的集群)、可靠性和集群利用率进行了提升。YARN实现这些需求的方式是,把Job
Tracker的两个主要功能(资源管理和作业调度/监控)分成了两个独立的服务程序——全局的资源管理(RM)和针对每一个应用的应用 Master(AM)。这样一个应用要么是传统意义上的MapReduce任务,要么是任务的有向无环图(DAG)。

          YARN从某种那个意义上来说应该算做是一个云操作系统,它负责集群的资源管理。在操作系统之上能够开发各类的应用程序,比如批处理MapReduce、流式作业Storm以及实时型服务Storm等。这些应用能够同一时候利用Hadoop集群的计算能力和丰富的数据存储模型,共享同一个Hadoop
集群和驻留在集群上的数据。

此外,这些新的框架还能够利用YARN的资源管理器,提供新的应用管理器实现。


二 YARN的组成

                                        
                                

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmd6aGVianV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

                                             YARN的基本组成
 
YARN的核心思想 将JobTracker和TaskTacker进行分离,它由以下几大构成组件: 
        a. 一个全局的资源管理器  ResourceManager
        b. ResourceManager的每一个节点代理  NodeManager
        c. 表示每一个应用的 ApplicationMaster
        d. 每个ApplicationMaster拥有多个Container在NodeManager上执行

以下对它们做一个简单的介绍:

1. ResourceManager(RM)

         RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications
Manager。ASM)。

     
      调度器  调度器依据容量、队列等限制条件(如每一个队列分配一定的资源,最多运行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。

须要注意的是。该调度器是一个“纯调度器”,它不再从事不论什么与详细应用程序相关的工作,比方不负责监控或者跟踪应用的运行状态等,也不负责又一次启动因应用运行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完毕。调度器仅依据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource
Container。简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每一个任务使用的资源量。此外。该调度器是一个可插拔的组件,用户可依据自己的须要设计新的调度器,YARN提供了多种直接可用的调度器,比方Fair Scheduler和Capacity Scheduler等。


       应用程序管理器  应用程序管理器负责管理整个系统中全部应用程序,包含应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster执行状态并在失败时又一次启动它等。

2. ApplicationMaster(AM)

          用户提交的每一个应用程序均包括一个AM,主要功能包括:
          与RM调度器协商以获取资源(用Container表示);
          将得到的任务进一步分配给内部的任务(资源的二次分配)。
          与NM通信以启动/停止任务。
          监控全部任务执行状态,并在任务执行失败时又一次为任务申请资源以重新启动任务。
   
      当前YARN自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributedshell。它能够申请一定数目的Container以并行执行一个Shell命令或者Shell脚本;还有一个是执行MapReduce应用程序的AM—MRAppMaster。

       注:RM仅仅负责监控AM,在AM执行失败时候启动它,RM并不负责AM内部任务的容错,这由AM来完毕。


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

    4. Container
           Container是YARN中的资源抽象。它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示。YARN会为每一个任务分配一个Container,且该任务仅仅能使用该Container中描写叙述的资源。

     注:1. Container不同于MRv1中的slot,它是一个动态资源划分单位。是依据应用程序的需求动态生成的。

            2.  如今YARN仅支持CPU和内存两种资源,且使用了轻量级资源隔离机制Cgroups进行资源隔离。
      
            YARN的资源管理和执行框架都是按主/从范例实现的——Slave ---节点管理器(NM)执行、监控每一个节点。并向集群的Master---资源管理器(RM)报告资源的可用性状态,资源管理器终于为系统里全部应用分配资源。

        特定应用的运行由ApplicationMaster控制。ApplicationMaster负责将一个应用切割成多个任务。并和资源管理器协调运行所需的资源,资源一旦分配好,ApplicationMaster就和节点管理器一起安排、运行、监控独立的应用任务。

        须要说明的是。 YARN不同服务组件的通信方式採用了事件驱动的异步并发机制,这样能够简化系统的设计。


四 YARN 架构简析
      
   集中式架构
        集中式调度器(Monolithic Schuduler)的特点是,资源的调度和应用程序的管理功能所有放到一个进程中完毕,开源界典型的代表是MRv1 JobTracker的实现。

这样设计的缺点非常明显,扩展性差:首先,集群规模受限;其次。新的调度策略难以融入到现有代码中,比方之前仅支持MapReduce作业,如今要支持流式作业,而将流式作业的调度策略嵌入到中央调度当中是一项非常难的工作。


   双层调度架构
        为了客服集中式调度器的不足,双层调度器是一种非常easy被想到的解决之道。它可看作是一种分而治之的机制或者是策略下放机制:双层调度器仍保留一个经简化的集中式资源调度器,但详细任务相关的调度策略则下方到各个应用程序调度器完毕。

这样的调度器的典型代表是Mesos或YARN。

Mesos调度器由两部分组成。各自是资源调度器和框架(应用程序)调度器,当中,资源调度器负责将集群中的资源分配给各个(应用程序),而框架(应用程序)调度器负责将资源进一步分配给内部的各个任务。用户非常easy将一种框架或者系统接入Mesos.

       
       双层调度器的特点是:各个框架调度器并不知道整个集群资源使用情况,仅仅是被动地接受资源;资源调度器仅将可用的资源推送给各个框架,而由框架自己选择是使用还是拒绝这些资源;一旦框架接受到新资源,再进一步将资源分配给其内部的任务,进而实现双层调度。然而这样的调度器也是有缺点。主要表如今下面两个方面:1.各个框架无法知道整个集群的实时资源使用情况;採用悲观锁,并发粒度小。

           具体介绍能够參考这篇论文:


五 小结
          
       随着YARN的不断发展和完好,各种类型的应用程序。包含类似MapReduce的短作业、类似Web
Service的长作业等。均可直接部署和执行在YARN上,当前YARN对外提供的接口均是底层接口,这给用户编写和调试应用程序带来了非常大的麻烦,比方无法聚集分散在各个节点上的应用程序日志、应用程序生命周期难以管理、缺乏第三方工具将一个现有的系统执行在YARN上等。仅仅有这些问题都得到非常好的解决,YARN才干够走向成熟。

Hadoop - YARN 概述的更多相关文章

  1. Apache Hadoop YARN: 背景及概述

    从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程.自此Apache H ...

  2. 大数据及Hadoop的概述

    一.大数据存储和计算的各种框架即工具 1.存储:HDFS:分布式文件系统   Hbase:分布式数据库系统   Kafka:分布式消息缓存系统 2.计算:Mapreduce:离线计算框架   stor ...

  3. YARN分析系列之二 -- Hadoop YARN各个自模块说明

    先做如下声明,本代码版本是基于 3.1.2 版本. 其实,我们自己在写代码的时候,会有意识地将比较大的功能项独立成包,独立成module, 独立成项目,项目之间的关系既容易阅读理解,又便于管理. 如下 ...

  4. Hadoop YARN 100-1知识点

    0 YARN中实体 资源管理者(resource manager, RM) 长时间运行的守护进程,负责管理集群上资源的使用 节点管理者(node manager, NM) 长时间运行的守护进程,在集群 ...

  5. hadoop yarn running beyond physical memory used

    老是报物理内存越界,kill container,然后把yarn.scheduler.minimum-allocation-mb设成2048就好了 跟这个yarn.nodemanager.pmem-c ...

  6. Hadoop YARN配置参数剖析—RM与NM相关参数

    注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) ...

  7. Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案

    注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明.   Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...

  8. hadoop错误org.apache.hadoop.yarn.exceptions.YarnException Unauthorized request to start container

    错误: 14/04/29 02:45:07 INFO mapreduce.Job: Job job_1398704073313_0021 failed with state FAILED due to ...

  9. hadoop Yarn 编程API

    客户端编程库: 所在jar包: org.apache.hadoop.yarn.client.YarnClient 使用方法: 1 定义一个YarnClient实例: private YarnClien ...

随机推荐

  1. javaweb学习总结(十四)——JSP原理(转)

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  2. 洛谷P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers

    题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人.然而,在任何一群朋友中 ...

  3. 标准C程序设计七---63

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  4. 25深入理解C指针之---传递数组

    一.传递数组:将数组作为参数传入函数,或将数组作为数据当成是函数的返回值 1.定义:可以传入和传出数组 2.特征: 1).将数组作为参数传递给函数的本质是传递数组的地址,这种传递无需复制数组元素,所以 ...

  5. HDU 3068 Manacher

    题目链接:http://hdu.hustoj.com/showproblem.php?pid=3068 今天学习一下马拉车算法,虽然mg讲过,但是没有系统去学. 算法学习:参考博客 马拉车模板题. # ...

  6. spring boot原理分析

    1.分析spring-boot-starter-parent <parent> <groupId>org.springframework.boot</groupId> ...

  7. 思科CCIE全新升级,SDN/SD-WAN成重头戏!

    CCIE,全称Cisco Certified Internetwork Expert,是美国Cisco公司于1993年开始推出的专家级认证考试.被全球公认为IT业最权威的认证,是全球Internetw ...

  8. 洛谷——P1588 丢失的牛

    P1588 丢失的牛 题目描述 FJ丢失了他的一头牛,他决定追回他的牛.已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动.FJ的行走方式很特别:他每一次可以前进一步.后退一步或者直接走 ...

  9. 求lca(模板)

    洛谷——P3379 [模板]最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点 ...

  10. ubuntu下打开windows里的txt文件乱码解决

    是编码问题引起的问题: Linux下默认的编码是UTF-8,而Windows下默认的编码是GB2312/GBK.执行如下第一条语句即可 gsettings set org.gnome.gedit.pr ...