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. RHEL5.6环境下yum安装MySQL

    RHEL5.6环境下yum安装MySQL记录,2017年2月20日 1.卸载原有的MySQL rpm -qa命令查询是否安装了MySQL [root@localhost mysql]# rpm -qa ...

  2. 全面学习ORACLE Scheduler特性(9)创建Chains

    五.使用Chains 今天要来认识一位新同学:CHAIN(注意不要敲成CHINA).CHAIN可以被视做一组Programs的复合,举个简单的例子:运行PROGRAM:A以及PROGRAM:B,如果成 ...

  3. 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...

  4. [转]ASP.NET MVC中实现多个按钮提交的几种方法

    本文转自:http://www.cnblogs.com/wuchang/archive/2010/01/29/1658916.html 有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能, ...

  5. 【原创】利用doxygen来管理项目文档或注释

    一.doxygen应用场景: doxygen可以用来管理目前主流的编程语言的注释而形成文档系统.(包括C, C++, C#, Objective-C, IDL, Java, VHDL, PHP, Py ...

  6. SpringMVC中Controller类的方法返回String不跳转,而是将字符串显示到页面

    问题描述: 在spring中,控制层的注解一般都是使用@Controller,如果哪个请求参数需要返回数据的话,我们可以在该方法上配合@ResponseBody注解使用,这也是比较常见的方式了. 今天 ...

  7. iOS设计模式——Category和 Extension

    什么是Category Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择.新添加的方法同样也会被被扩展的类的所有子类自动继承 ...

  8. Linux 报错 ifconfig command not found

    1.Linux 中输入ifconfig命令报错:ifconfig command not found 有可能是没有安装ifconfig,如果没有,安装上去 2.查看是不是缺少了ifconfig,它是在 ...

  9. Django框架 之基础入门

    django是一款MVT的框架 一.基本过程 1.创建项目:django-admin startproject 项目名称 2.编写配置文件settings.py(数据库配置.时区.后台管理中英文等) ...

  10. re模块,正则表达式

    re模块 作用:取文本或者字符串内你所需要的东西 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. ^叫做元字符,元 ...