第5章Hadoop的集群资源管理系统-YARN

       

目录

5.1为什么要使用YARN

5.2YARN的基本架构

5.2.1ResourceManager进程 

5.2.2ApplicationMaster和NodeManager

5.3YARN工作流程

5.4YARN搭建

      (1)编辑mapered-site.xml配置文件

      (2)编辑yarn-site.xml

      (3)编辑yarn-yarn-env.sh

      (4)检查slaves文件

      (5)配置若没有问题则可以启动了

      (6)访问网页


        旧版本MapReduce中的JobTracker/TaskTracker正在可拓展性、内存消耗、可靠性和线程模型方面存在很多问题,需要开发者做很多调整来修复。

        Hadoop的开发者对这些问题进行了Bug修复,可是由此带来的成本却越来越高,为了从根本上解决MapReduce存在的问题,同时也为了保障Hadoop框架后续能够健康的发展,从Hadoop0.23.0版本开始,Hadoop的MapReduce框架就被动了大手术,也从本上发生了较大的变化,同时新的Hadoop MapRedece框架被命名为MapReduceV2,也叫YARN(Yet Another Resource Negotiator:另一种资源协调者)

5.1为什么要使用YARN

        与旧MapReduce作比较,YARN采用了一种分层的集群框架,具有以下几个优势:

        解决了NameNode的单点故障问题,可以通过配置NameNode高可用来解决。

        提出了HDFS联邦,通过HDFS联邦可以使多个NameNode分别管理不同的目录,从而实现访问隔离及横向拓展。

        将资源管理和应用程序管理分开,分别由ResourceManager和ApplicationMaster负责。

        具有向后兼容的特点,运行在MR1上的作业不需要做任何修改就可以一直到YARN上,同意由YARN进行管理和资源调度。目前支持的计算框架有 MapReduce Storm Spark 和 Flink等。

5.2YARN的基本架构

        YARN的核心思想是将功能分开,在MR1中,JobTracker有两个功能,一个是资源管理,另一个是作业调用。在YARN中则分别由ResourceManager和ApplicationMaster进程来实现。其中,ResourceManager进程完成整个集群的资源管理和调度,而ApplicationMaster进程则负责应用程序的相关事务,如任务调度、容错和任务监控等。

        系统中所有应用资源调度的最终决定权由ResourceMaager担当。每个应用的ApplicationMaster实际上是框架指定的库,其从ResourceManager调度资源并和NodeManager一同执行监控任务,NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况。

5.2.1ResourceManager进程 

        ResourceManager进程主要包含两个主要内容:Scheduler和ApplicationManager

        Scheduler依据容量和队列等类似的约束分配资源到运行的不同应用中。Scheduler是一个纯调度器,它不监督也不跟踪应用的状态。同样的,它不确保重启由应用失败或硬件失败所造成的失败任务。Scheduler根据应用所需的资源执行调度,调度内存、CPU、硬盘和网络等资源 到Container中。

        Scheduler有一个用于队列和应用中集群资源划分的插件,目前MapReduce调度器如CapacityScheduler和FairScheduler就是插件的一些实例。

        CapacityScheduler支持层级队列,这使得集群资源的共享更加可预测。

5.2.2ApplicationMaster和NodeManager

        ApplicationManager进程负责接收作业提交,协商首个Container执行应用指定的ApplicationManager并提供重启失败的ApplicationManagerContainer的服务。

        每个机器上的NodeManager作为框架代理,负责监控Container资源使用的监控并提供类似ResourceManager或者Scheduler之类提供的报告。

        每个应用的ApplicationMaster进程负责协调Scheduler上合适的资源容器,并跟踪容器状态和监控执行。

5.3YARN工作流程

        YARN的工作流程如图所示

        YARN的工作流程主要分为以下几个步骤。

        (1)用户向 YARN中的ResourceManager提交应用程序,包括用户程序,启动ApplicationMaster命令和ApplicationMaster程序等。

        (2)ResourceManager为应用程序分配Container,随后于Container所在的NodeManager进行通信,并且由NodeManager在Container中启动对应的ApplicationMaster。

        (3)ApplicationMaster会在ResourceManager中进行注册,这样用户就能够通过ResourceManager来查看应用程序的运行情况了,然后他会为这个应用程序的各项任务申请资源,同时将监控其运行状态直到结束。

        (4)ApplicationManager采用的是轮询方式,基于RPC协议向ResourceManager申请和获取所需要的资源。

        (5)在ApplicationManager申请到资源后,它会和申请到Contaioner所对应的NodeManager进行交互通信,同时要求在该Container中启动任务 

        (6)NodeManager为要启动的任务准备好运行环境,并且将启动命令卸载一个脚本中,通过脚本来运行任务。

        (7)每个任务基于RPC协议向对应的ApplicationMaster汇报自己的运行状态于进度,一边让ApplicationMaster随时掌握各个任务的运行状态,这样就可以在任务运行失败时重启任务。

        (8)在应用程序运行完之后,其对应的ApplicationMaster会通过于ResourceManager通信来有要求注销和关闭自己。

5.4YARN搭建

        前面已经介绍了YARN的架构和基本流程,接下来介绍YARN的环境,关于搭建过程,可以参考官方文档.

        (1)编辑mapered-site.xml配置文件

cd /usr/local/hadoop/hadoop-2.9.2/etc/hadoop

cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

         (2)编辑yarn-site.xml

        我这里是把hadoop6作为了ResourceManager因为hadoop5和hadoop4由namenode和secondrynamenode。为了机器负载平衡

vim yarn-site.xml

         (3)编辑yarn-yarn-env.sh

        修改里面的JDK路径

vim yarn-env.sh

        修改前:

        修改后:

         (4)检查slaves文件

         (5)配置若没有问题则可以启动了

在根目录下

start-yarn.sh

         我这里所有机器全部正常启动,没得问题了。

        (6)访问网页

         从上图中可以看出由3个节点在运行。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值