YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManger申请资源,并要求NodeManager启动可以占用一定资源的任务。

Hadoop2.0 YARN包含以下实体,可以看图:

ResourceManager(RM):全局的资源管理器,负责整个系统的资源管理和分配

NodeManager(NM):每个节点上的资源和任务管理器,定时向RM汇报本节点上的资源使用情况和各个Container的运行状态,接收并处理来自AM的Container启动/停止等各种请求

ApplicationMaster(AM):用户提交的每个应用程序均包含一个AM,主要功能与RM调度器协商以获取资源,进一步分配给内部的任务,与NM通信启动/停止任务,监控任务的运行状态

Container:是YARN中资源的抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。

结合YARN架构图描述一个资源请求的流程:

  1. NodeManager向ResourceManager注册各机器资源
  2. 客户端向ResouceManager提交作业
  3. ApplicationMaster向ResouceManager请求资源,并判断是否满足需要
  4. ResouceManager以Container的形式将资源反馈给ApplicationMaster
  5. Container作为资源单元保证作业隔离运行

关于Hadoop2.0的安装可以参考这篇博文,Hadoop 2.0安装以及不停集群加datanode,下面对HADOOP2.0(HDFS2)以及YARN设计的亮点进行总结:

  • 1.针对Hadoop1.0中单个NameNode制约HDFS的扩展性问题,Hadoop2.0提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展。对于运行中NameNode的单点故障,通过NameNode热备方案(NameNode HA)实现。
  • 2.在Hadoop1.0中,JobTracker由资源管理和作业控制两部分组成,对JobTracker赋予的功能过多而造成负载过重,从设计角度上看,Hadoop未能够将资源管理相关功能与应用程序相关功能非开,造成Hadoop1.0难以支持多种计算框架。而YARN通过将资源管理和应用程序管理两部分分剥离开,分别由ResouceManager和ApplicationMaster负责,其中,ResouceManager专管资源管理和调度,而ApplicationMaster则负责与具体应用程序相关的任务切分、任务调度和容错等。
  • 3.在ResouceManager中,ClientRMService和AdminService两个服务分别负责处理来自普通用户和管理员的请求,需要注意的是,之所以让这两类请求通过两个不同的通信通道发送个ResourceManager,是因为要避免普通用户请求过多导致管理员请求被阻塞而迟迟得不到处理。
  • 4.JDK中自带一个RPC框架-RMI,之所以不直接使用该框架,主要是考虑到RPC是Hadoop最底层最核心的模块之一,保证其轻量级、高性能和可控性显得尤为重要,而RMI重量级过大且用户可控之处太少(如网络连接、超时和缓冲等均难以定制或者修改),Doug Cutting在Hadoop最初设计时就是这样描述Hadoop RPC设计动机的。
  • 5.总体来说Hadoop2.0中的HDFS和YARN均采用了基于共享存储的HA解决方案,即Active Master不断将信息写入一个共享存储系统,而Standby Master则不断读取这些信息,以与Active Master的内存信息保持同步。当需要主备切换时,选中的Standby Master需先保证信息完全同步后,再将自己的角色切换至Active Master。目前而言,常用的共享存储系统有以下几个:Zookeeper,NFS,HDFS,Bookeeper和QJM。HA架构均分为手动模式和自动模式,其中手动模式是指由管理员通过命令进行主备切换,这通常用于服务升级;自动模式可降低运维成本,但存在潜在危险。
  • 6.Zookeeper设计的目的并不是数据存储,但他的确可以安全可靠地存储少量数据以解决分布式环境下多个服务之间的数据共享问题。
  • 7.解决HA问题需考虑以下几个问题:脑裂和切换对外透明。脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个Active Master,最终使得整个集群处于混乱状态。通常采用隔离机制解决脑裂问题。为了保证整个切换是对外透明的,Hadoop应保证所有客户端和Slave能自动重定向到新的Active Master上,通常是通过若干次尝试连接旧Master不成功后,再重新尝试新Master完成的,整个过程有一定的延时,可以自行设置相关参数。
  • 8.ResourceManger并不会保存已经分配给 每个ApplicationMaster的资源信息和每个NodeManage的资源使用信息,这些均可通过相应的心跳汇报机制重构出来。正因为如此,ResouceManager HA的实现是非常轻量的。
  • 9.Hadoop调度器支持多个队列多用户,这种调度器允许管理员按照应用需求对用户或者应用程序分组,并为不同的分组分配不同的资源量,同时通过添加各种约束防止单个用户或者应用程序独占资源,进而能够满足各种QoS需求,典型的代表是Yahoo!的Capacity Scheduler和Facebook的Fair Scheduler。
  • 10.YARN的内存资源隔离,默认采用线程监控的方案,提供灵活的控制策略,具体可以看这篇博文,Hadoop YARN资源隔离技术

参考:

《Hadoop技术内幕--深入解析YARN架构设计与实现原理》

《大规模分布式系统架构与设计实践》

Hadoop2.0(HDFS2)以及YARN设计的亮点的更多相关文章

  1. Hadoop2.0构成之YARN

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

  2. Hadoop2.0源码包简介

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

  3. Hadoop2.0之YARN

    YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操 ...

  4. 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. ...

  5. hadoop2.0 和1.0的区别

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

  6. Hadoop2.0 Namenode HA实现方案

    Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...

  7. Hadoop2.0的基本构成总览

    Hadoop1.x和Hadoop2.0构成图对比 Hadoop1.x构成: HDFS.MapReduce(资源管理和任务调度):运行时环境为JobTracker和TaskTracker: Hadoop ...

  8. Hadoop2.0.0+CDH4.5.0集群配置

    Hadoop 2.0.0-cdh4.5.0安装:http://blog.csdn.net/u010967382/article/details/18402217 CDH版本下载:http://arch ...

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

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

随机推荐

  1. NPOI 格式设置2—时间,千分位,繁体,小数位

    在Excel中我们经常要设置格式,比如说日期格式(yyyymmdd).小数点格式(1.20).货币格式($2000).百分比格式(99.99%)等等,这些东西在过去我们恐怕只能在服务器端生成好,不但增 ...

  2. 简述几项关于web应用的开发技术

    有几个人曾经问我,有哪些最有用或最好的编程语言适宜学习? 姑且略过HTML/CSS不谈,我认为答案取决于你想通过编程来做什么. 要点速览 对只用一种语言来构建某个项目的情况而言,Javascript和 ...

  3. Android-Activity使用(2)

    接着Android-Activity使用(1)实现页面跳转 一.在main_activity中添加按钮,注意 id的写法为"@+id/"+"id真正的名字" & ...

  4. Qt之QTableView显示富文本

    简述 对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本.进度条.复选框等,今天我们介绍一下关于富文本的显示. 可能绝大多数小伙伴会通过QAbstractTableModel中的d ...

  5. Mac系统Safari浏览器启动无图模式

    有的时候我们用热点上网,图片的出现会消耗大量的流量,这时候就需要启动无图模式不加载图片. 步骤:启动Safari浏览器->偏好设置->高级->勾选“在菜单栏中显示“开发”菜单”-&g ...

  6. JavaSE学习总结第08天_面向对象3

      08.01 工具类中使用静态 例: class ArrayTool { //将构造方法私有,外界不能创建该类的对象 private ArrayTool(){} //遍历数组 public stat ...

  7. Ansj配置指南!

    =.= 折腾死 ①你想要http://maven.ansj.org/org/ansj/ansj_seg/找一个尽可能高的版本号,比方2.0.7,点进去之后找到相应的jar,比方ansj_seg-2.0 ...

  8. 面试题-Java基础-开发环境

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...

  9. [补档]暑假集训D8总结

    %dalao 今天有两位大佬来讲课,meaty来讲了Catalan(本来说好的莫比乌斯反演呢),聪聪来讲Splay呢 至于听课笔记= =,没来得及记= = 不过好不想上树啊,上了树就下不来了 考试 仍 ...

  10. 树莓派学习笔记——USB wifi配置指南

    0 前言     树莓派既能够使用有线网络又能够无线网络,假设使用有线网络不方便的话能够借助USB wifi无线网卡让树莓派也插上无线"翅膀". 可是和使用有线网络即插即用的方式不 ...