资讯专栏INFORMATION COLUMN

2018年第24周-大数据的YARN

mist14 / 1386人阅读

摘要:,提供已完成的作业的信息。负责接收的提交,协调第一个容器来执行,而且提供的失败重启功能。通过支持资源保留功能,该允许用户指定资源超时和时间限制如,来保留资源以确保重要的能够可预测执行。查看状态的命令自动故障转移基于的来决定哪个称为。

Hadoop可以说是一个大型的操作系统,HDFS就是其文件系统,那么YARN就是其计算系统。

YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器。在此之前是使用MapReduce 1.0
MapReduce 1.0和MapReduce 2.0(YARN)的区别:
MapReduce 1.0
后台进程有:
1.JobTracker
用于处理作业(用户提交代码)的后台程序
决定有哪些文件参与处理,然后切割task并分配结点,原则是就近运行
监控task,重启失败task
每个集群只有唯一一个JobTracker
2.TaskTracker
根datanode通过节点
管理各自节点上的task(由JobTracker分配)
每个节点只有一个TaskTracker,但一个TaskTracker可以启动多个JVM,用于并行执行map或reduce任务

MapReduce 2.0(YARN)

YARN分成两部分:集群资源管理和MapReduce
在YARN里,JobTracker被分为两个服务:
第一部分:
1.ResourceManager,一个长期运行的YARN服务,负责接受application和在集群上运行application。一个MapReduce作业(job)就是一个application。
2.JobHistoryServer,提供已完成的作业的信息。
3.Application Master,管理每个MapReduce作业,当作业完成Application Master则关闭。
4.NodeManger替代了TaskTracker,是一个YARN服务,部署在节点上,负责管理该节点的资源。还负责启动container(一个map任务或是reduce任务)

新的架构将JobTacker分为ResourceManage和ApplicationMaster。
ResourceManage可以跨application管理资源的利用。
ApplicationMaster负责管理作业(job)的执行。
这样的架构,打破了之前的瓶颈,让Hadoop机器可以扩展到比4000个节点海大。
这种体系结构还允许同时执行各种编程模型,如图形处理、迭代处理、机器学习和一般的集群计算(包括传统的MapReduce)。

YARN 架构

YARN的基本理念是将 资源管理 和 作业调度/监控 的功能拆分为多个守护进程。所以有了全局的ResourceManager(RM)和每个application的的ApplicationMaster(AM)。一个application是一个独立作业或则是DAG作业。

ResourceManager和NodeManager组成了数据计算框架(data-computation framework)。ResourceManager有最高权利可以仲裁所有application之间的资源。在这框架里,NodeManager相当于是一个agent,负责容器化、监控资源的使用(cpu, 内存, 磁盘,网络)并汇报给ResourceManager/Scheduler.

所以到现在,我们就有术语:

RM ResourceManager(资源管理器)

AM ApplicationMaster

NM NodeManager(节点管理器)

application(=job)

job(作业)

每个application的ApplicationMaster(AM),实际上是一个特殊的框架类库,AM的任务就是与RM协商资源,并与NodeManager一起执行和监视task。

ResourceManager

ResourceManager有两部分组成:Schedule和ApplicationManager

Scheduler

Scheduler 负责分配资源给各个application,这些application都是要受同样的容量、队列等限制。
Scheduler是纯调度,不负责任何监视和跟踪application的状态。同样的,它也不会负责重启那些因为application失败或硬件崩溃导致失败的任务。Scheduler是根据application资源需求来执行调度功能;是根据资源Container(容器)这个抽象概念来进行调度资源,这Container对应着内存、CPU、磁盘和网络等。
Scheduler有个插件策略(pluggable policy),可以自己配置调度器来决定在队列之间、应用之间的集群资源的分配。现有调度器是CapacityScheduler和FairScheduler。

ApplicationsManager

ApplicationsManager负责接收job的提交,协调第一个容器来执行ApplicationMaster,而且提供ApplicationMaster的失败重启功能。每个application对应的ApplicationMaster负责与Scheduler来协商请求合适的资源,负责跟踪application的状态和监控进度。
hadoop-2.x的MapReduce维护的API兼容hadoop-1.x。这意味着所有MapReduce job可以不用修改,只需要重新编译,即可在YARN上执行。
YARN通过ReservationSystem支持资源保留(resource reservation) 功能,该ReservationSystem允许用户指定资源超时和时间限制(如deadline),来保留资源以确保重要的job能够可预测执行(predictable execution)。ReservationSystem跟踪资源超时,权限控制,并动态指示底层调度器来确保资源保留(resource reservation)功能的执行。

为了YARN能够扩展超过上千个节点,YARN提供Federation功能。Federation允许多个YARN集群自动匹配,让他们成为一个巨大的集群。这样就可以达到更大的扩展,允许多个独立的集群协作起来执行更大的作业。

ResourceManager高可用

RM负责跟踪集群的资源和调度application(如MapReduce作业)。在Hadoop2.4版本之前,ResourceManager在集群中只有一个,所以会有单点失败的可能。2.4版本后添加多一个ResourceManager,组成 Active/Standby ResourceManager来实现高可用。

高可用架构

ResourceManager高可用实现方式是Active/Standby架构。任何时候,只能有一个RM是active,剩余的RM是standby模式(时刻准备接替active的RM)。故障转移可以通过控制台(手动)或故障转移控制器(自动)。

手动故障转移

当自动故障转移功能没有启动时,可以在控制台指定一个RM是active。步骤如下:先将一个active的RM置为standby,然后将一个standby转为active。都是通过"yarn rmadmin"命令。
查看RM状态的命令

yarn rmadmin -getServiceState rm1
自动故障转移

基于ZooKeeper的ActiveStandbyElector来决定哪个RM称为active。当active的RM崩溃或者是没响应时,其他RM会自动被选择为active来接替故障的RM。注意,这里跟HDFS的高可用不一样,HDFS是多带带运行ZKFC守护进程。而ActiveStandbyElector是嵌入在RM里的。

客户端、ApplicationMaster和NodeManager在RM故障转移的时候的处理

当有多个RM的时候,可以在客户端和NM的配置文件yarn-site.xml将所有的RM列出。客户端、ApplicationMaster(AM)和NodeManager(NM)会以 round-robin的形式去逐个访问RM,直至找到active的RM。当active崩溃时,客户端它们会继续 round-robin去找出active的“新”active的RM。这些逻辑都写在这个类里s org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider。如果修改这逻辑可以实现该接口 org.apache.hadoop.yarn.client.RMFailoverProxyProvide,并将 yarn.client.failover-proxy-provider参数配置为该类的类名。

ResourceManager 的Web界面

standby的RM都会将所有的web请求重定向到active的RM(除了about的页面)。

Web Services

Web Services 也一样,会将所有的web请求重定向到active的RM。

ResourceManager的重启

ResourceManager是中央式的管理资源和调度application。所以重启ResourceManager时,需要保证整个YARN保持正常运作,且停机时对用户是不可见。
整体思路是:当RM关闭时,会将已提交的application的元数据(如ApplicationSubmissionContext)保存在插件化的state-store,也会保存application的最终完成状态(如failed, killed, finished),如果application是完成状态的,也会保存其分析信息。如果是在安全环境,会保存证书,如security keys和token等。
在RM启动时,RM会重建整个集群的运行状态,数据有从state-store获取之前关闭时的信息,然后RM会发送re-sync命令到所有的NodeManager和ApplicationMaster,RM的中心调度器会去跟踪所有容器的生命周期,applications的headroom和资源请求,队列资源使用情况。在NodeManager和ApplicationMaster收到re-sync,NM会返回容器状态,ApplicationMaster会返回application的调度情况,必要时还会重新请求资源(在请求资源的时候RM重启没收到的情况)。

ResourceManager的重启的配置

启动RM的重启配置:


        yarn.resourcemanager.ha.enabled
        true

     

state-store的配置

属性
yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore(默认值) org.apache.hadoop.yarn.server.resourcemanager.recovery.LeveldbRMStateStore

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore是基于ZooKeeper的state-store:虽然可以自由指定state-store,但如果要开启HA功能,就只能用ZooKeeper,这是因为基于ZooKeeper的state-store支持fencing机制来避免脑裂。
org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore是基于文件系统的state-store:支持HDFS和本地文件系统,但fencing机制不支持。
org.apache.hadoop.yarn.server.resourcemanager.recovery.LeveldbRMStateStore是基于LevelDB的state-store:被认为是比上面两个还轻量级。LevelDB支持更好的原子操作,更少的IO,使用更少的文件,但fencing机制不支持。

这里只说基于ZooKeeper的state配置:


        yarn.resourcemanager.store.class
        org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    
     
      
    
        yarn.resourcemanager.zk-address
        s1.jevoncode.com:2181,s2.jevoncode.com:2181,s3.jevoncode.com:2181
        For multiple zk services, separate them with comma
    
     
YARN部署

1.配置mapred-site.xml



 

    
        
        mapreduce.framework.name
        yarn
    

2.配置yarn-site.xml


 

 
      
    
        yarn.resourcemanager.ha.enabled
        true
    
     
   
    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
 
     
    
        yarn.resourcemanager.hostname.rm1
        s1.jevoncode.com
    
 
    
        yarn.resourcemanager.hostname.rm2
        s3.jevoncode.com
    
 
     
    
        yarn.resourcemanager.recovery.enabled
        true
    
     
    
    
        yarn.resourcemanager.store.class
        org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    
     
      
    
        yarn.resourcemanager.zk-address
        s1.jevoncode.com:2181,s2.jevoncode.com:2181,s3.jevoncode.com:2181
        For multiple zk services, separate them with comma
    
      
    
        yarn.resourcemanager.cluster-id
        yarn-ha
    
     
     
        yarn.resourcemanager.hostname
        s1.jevoncode.com
    
 

3.配置slave

s4.jevoncode.com
s5.jevoncode.com
s6.jevoncode.com

4.在s1启动yarn

start-yarn.sh

5.在s3启动standby的resourcemanager

yarn-daemon.sh start resourcemanager

6.此时就能查看到ResourceManager页面

http://s1.jevoncode.com:8088

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8394.html

相关文章

  • 2018年第25-HadoopMR程序-天气数据分析

    摘要:获得最高气温的程序一般写程序,都以小量的数据在本地测试通过,再在放在集群上跑,不然在集群上测试,很浪费时间。 天气数据 通过ftp从ftp.ncdc.noaa.gov地址获取/pub/data/noaa/目录下的天气数据,我写了个ftp抓取程序去抓取,如1950的天气数据摘录如下: 0171999999939931950010100005+36000-094167SAO +03839...

    hot_pot_Leo 评论0 收藏0
  • 2018年第30-SSH端口转发

    摘要:问题背景现有跳板机和服务器服务器运行则和,需要用网页去访问,但开放外网端口不安全且没必要,因为大数据环境就是内部处理数据使用的,于是使用端口转发来解决这个问题。自己电脑,本地运行命令是账号,是跳板机的地址。 问题背景 现有跳板机A和服务器B服务器B运行则hdfs和yarn,需要用网页去访问,但开放外网端口不安全且没必要,因为大数据环境就是内部处理数据使用的,于是使用ssh端口转发来解决...

    URLOS 评论0 收藏0
  • 2018年第26-解剖MapReduce Job

    摘要:解剖在里,一个被称为。下载线程的这个最大的下载时间段是可以通过秒调整的。如果集群环境的网络本身是瓶颈,那么用户可以通过调大这个参数来避免下载线程被误判为失败的情况。 Hadoop架构预览 Apache Hadoop是一个开源软件框架,用于在廉价硬件上大规模存储和计算数据集。以下是5个组成Hadoop的模块。 showImg(https://segmentfault.com/img/...

    tinna 评论0 收藏0
  • 2018年第33-javeer对nodejs体会

    摘要:流程源处理源代码,例如过滤任何值。工艺类从编译后处理生成的文件,例如对类进行字节码增强。整合后的测试执行集成测试后执行所需的操作。校验运行任何检查以验证包装是否有效并符合质量标准。 nodejs和es6 nodejs的语法和es6不一样,如模块系统,一个是CommonJS的require、一个是es6的import,写模块也不一样。 nodejs的npm 我来理解,nodejs类似与j...

    xiongzenghui 评论0 收藏0
  • 2018年第22-数据HDFS

    摘要:与大数据可以说是大数据的代名词。其实准确来说是家族是大数据的代名词,家族成员有等。于是通过网络管理多台机器存储的文件的系统,称为分布式文件系统。如文件系统的能够容忍节点故障且不丢失任何数据。 Hadoop与大数据 Hadoop可以说是大数据的代名词。 其实准确来说是Hadoop家族是大数据的代名词,家族成员有:Hadoop、Hive、Pig、HBase、Sqoop、Zookeeper...

    vspiders 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<