YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操作系统,通过它的api编写的应用可以跑在它上面,支持临时和常驻的应用,集群的资源可以得到最大限度的共享。资源是指CPU,内存,硬盘,带宽等可以量化的东西。

Hadoop1.0和2.0架构对比

  • 1.0的绝对核心是mapreduce,只能跑mapreduce的任务;2.0的绝对核心是YARN,除了可以跑mapreduce,还可以跑其它各种各样的任务,每个应用向YARN申请资源
  • 1.0的JobTracker和NameNode是单点,一旦挂掉,整个集群会瘫痪;2.0核心组件不再是单点,基于ZooKeeper实现了HA(RM Hadoop2.4版本及后才支持)
  • 2.0没有了JobTracker和TaskTracker,增加了ResourceManager,NodeManager,Application Master,Container
  • 2.0资源使用效率更高,资源使用更加弹性灵活
  • 2.0把资源管理以及调度和任务管理以及调度拆开,使得组件功能变得更简单,程序更加稳定健壮,1.0时都由JobTracker负责
  • 2.0比1.0架构更加复杂了
  • YARN的出现解决了1.0时代设计的缺陷,让Hadoop集群功能越来越完善,让Hadoop集群越来越稳定

YARN架构设计


(图片来源:hadoop官方文档)

  • Client客户端,提交任务到ResourceManager
  • ResourceManager(RM),负责接收任务,管理集群中的资源和调度,以及监控运行在YARN上的应用,它有2个核心的组件:1 可插拔的Scheduler资源调度器,2 ResoucerManagerApplicationMaster管理和监控应用
  • NodeManager(NM),负责管理单台机器的资源,通过心跳定时上报机器资源状态,启动和停止和监控Container,定时检查机器可用情况
  • ApplicationMaster(AM),运行在NM Container上的程序,由RM选择某台NM上的某个Container来运行这个程序,AM负责向RM申请应用所需资源,协调NM启动Container,负责应用任务的管理和调度,通过心跳定时向RM上报任务执行情况
  • Container,资源容器,不限定应用类型,可以跑任何任务,比如map任务,reduce任务,spark driver任务等,资源类型有:CPU,内存,硬盘,带宽等可量化的东西或者它们的组合。资源需要按照最小单位的倍数申请。
  • 执行流程概述;
    1 客户端准备好任务各种资源,包括代码,依赖包,配置文件等,通过RM客户端向RM提交任务
    2 RM进行权限检查和集群负载情况,如果通过,接受提交的任务,加入任务队列,等待调度器调度
    3 当有空闲资源时,RM选择一个NM,指示NM启动一个Container运行这个任务的AM
    4 这个应用的AM启动后,AM看看自己完成任务需要多少资源,然后向RM Scheduler申请资源
    5 Scheduler根据策略分配资源,返回资源信息给AM
    6 AM拿到已分配的资源信息后,协商NM启动Container,然后在Container运行自己的任务程序
    7 AM调度自己的任务,监控自己的任务状态(Container和AM通信),并定时向RM汇报任务状态
    8 AM执行完成,释放Container资源
  • RM出现异常;其它备份的RM接管,新的RM通知AM重新启动
  • NM出现异常:RM监控到NM异常,RM通知AM,AM做进一步处理
  • AM出现异常:RM负责重新启动AM,RM已经记录了AM任务状态信息,已经完成的任务不会再执行

RM实现HA


(图片来源:hadoop官方文档)

  • 大于等于2.4版本才支持HA
  • RM有2种状态,提供服务的处于Active状态,备份的是Standby状态
  • 通过ZooKeeper协调,实现故障转移
  • RM有内置ZKFC,只需开启配置,不需要单独启动额外的监控进程
  • RM状态信息存储方式:
    1 ZooKeeper
    2 HDFS
    3 本地文件系统,故障转移需要考虑信息如何同步,人工实现故障转移

调度策略

  • FIFO Scheduler(先进先出)
    先来的先执行,如果有任务执行时间长,占用资源多,后面的任务只能等待,即使是执行快,占用资源少的应用,也必须等待那个耗时耗资源的任务执行完
  • Capacity Scheduler(预先分配资源模式)
    N个任务队列,每个队列分配一定资源,每个队列资源互不共享,每个队列只有有权限的人或者组织才能使用。
    如果某些任务队列没有任务,会造成资源的浪费。相比FIFO模式,任务执行时间会变的更长,因为耗时耗资源的应用可用资源更少了。
  • Fair Scheduler(公平调度模式)
    先来的任务先执行,当有新的任务到来时,虽然上一个任务没有执行完,上一个任务释放的Container优先分配给这个新任务,当新任务执行完成时,释放的资源再给上一个任务使用。
    这样就能达到即不影响耗时的任务又能执行执行新任务的目的。在兼顾公平使用的基础上,最大化利用集群的资源。

参考资料

【0】八斗学院内部YARN学习资料
【1】YARN官方文档
http://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-site/YARN.html

Hadoop2.0之YARN的更多相关文章

  1. Hadoop2.0之YARN组件

    官方文档:https://hadoop.apache.org/docs/stable/,目前官方已经是3.x,但yarn机制没有太大变化 一.简介 在Hadoop1.0中,没有yarn,所有的任务调度 ...

  2. 基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma

    Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握H ...

  3. Cloudera Hadoop 5& Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)

    1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3. ...

  4. Hadoop2.0(HDFS2)以及YARN设计的亮点

    YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个Node ...

  5. Hadoop2.0构成之YARN

    YARN产生背景 Hadoop1.x中的MapReduce构成图如下: 在Hadoop1.x中MapReduce是Master/Slave结构,在集群中的表现形式为:1个JobTracker带多个Ta ...

  6. hadoop入门(3)——hadoop2.0理论基础:安装部署方法

    一.hadoop2.0安装部署流程         1.自动安装部署:Ambari.Minos(小米).Cloudera Manager(收费)         2.使用RPM包安装部署:Apache ...

  7. hadoop2.0 和1.0的区别

    1. Hadoop 1.0中的资源管理方案Hadoop 1.0指的是版本为Apache Hadoop 0.20.x.1.x或者CDH3系列的Hadoop,内核主要由HDFS和MapReduce两个系统 ...

  8. Hadoop2.0伪分布式平台环境搭建

    一.搭建环境的前提条件 环境:ubuntu-16.04 hadoop-2.6.0  jdk1.8.0_161.这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包自行下载即可. 因 ...

  9. Hadoop2.0源码包简介

    Hadoop2.0源码包简介 1.解压源码包: 2.目录结构: hadoop-common-project:Hadoop基础库所在目录,如RPC.Metrics.Counter等.包含了其它所有模块可 ...

随机推荐

  1. python 模块-easygui.buttonbox

    2018-03-0315:43:11 ): Yes_or_No = easygui.buttonbox("是否良品?", choices=['Yes', 'No', '退出']) ...

  2. python自动化--语言基础一数据类型及类型转换

    Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = () #定义元组 #a[]= # ...

  3. [转] Redis在windows下安装过程

    转载自(http://www.cnblogs.com/M-LittleBird/p/5902850.html) 一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的win ...

  4. 短URL生成

    算法原理 算法一 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略 ...

  5. Struts工作机制

    Struts工作机制? 为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config. ...

  6. 学习一波redis

    作为一名合格的java程序员,做web开发的,除了java,mysql,免不了用到内存数据库redis. 身为一名菜鸟,是时候来一波redis从入门到放弃了,哦不,从入门到精通.. 一.安装部署red ...

  7. 梦想CAD控件文字COM接口知识点

    一.参数绘制文字 在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOU ...

  8. Java基础(四)--接口和抽象类

    接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...

  9. 【转载】jxl的使用总结(java操作excel)

    jxl.jar是通过java操作excel表格的工具类库: 链接:https://pan.baidu.com/s/1AAT_eA_Q47zFeQohap6eQg 提取码:777b 1:通过模拟实现创建 ...

  10. python vars模块

    {'__file__': 'C:/Users/zhou/PycharmProjects/fullstack2/6_20/test.py', '__doc__': None, '__cached__': ...