Hadoop2.0(HDFS2)以及YARN设计的亮点
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架构图描述一个资源请求的流程:
- NodeManager向ResourceManager注册各机器资源
- 客户端向ResouceManager提交作业
- ApplicationMaster向ResouceManager请求资源,并判断是否满足需要
- ResouceManager以Container的形式将资源反馈给ApplicationMaster
- 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设计的亮点的更多相关文章
- Hadoop2.0构成之YARN
YARN产生背景 Hadoop1.x中的MapReduce构成图如下: 在Hadoop1.x中MapReduce是Master/Slave结构,在集群中的表现形式为:1个JobTracker带多个Ta ...
- Hadoop2.0源码包简介
Hadoop2.0源码包简介 1.解压源码包: 2.目录结构: hadoop-common-project:Hadoop基础库所在目录,如RPC.Metrics.Counter等.包含了其它所有模块可 ...
- Hadoop2.0之YARN
YARN(Yet Another Resource Negotiator)是Hadoop2.0集群中负责资源管理和调度以及监控运行在它上面的各种应用,是hadoop2.0中的核心,它类似于一个分布式操 ...
- Hadoop2.0之YARN组件
官方文档:https://hadoop.apache.org/docs/stable/,目前官方已经是3.x,但yarn机制没有太大变化 一.简介 在Hadoop1.0中,没有yarn,所有的任务调度 ...
- 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. ...
- hadoop2.0 和1.0的区别
1. Hadoop 1.0中的资源管理方案Hadoop 1.0指的是版本为Apache Hadoop 0.20.x.1.x或者CDH3系列的Hadoop,内核主要由HDFS和MapReduce两个系统 ...
- Hadoop2.0 Namenode HA实现方案
Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...
- Hadoop2.0的基本构成总览
Hadoop1.x和Hadoop2.0构成图对比 Hadoop1.x构成: HDFS.MapReduce(资源管理和任务调度):运行时环境为JobTracker和TaskTracker: Hadoop ...
- Hadoop2.0.0+CDH4.5.0集群配置
Hadoop 2.0.0-cdh4.5.0安装:http://blog.csdn.net/u010967382/article/details/18402217 CDH版本下载:http://arch ...
随机推荐
- Runtime.getRuntime().exec()
Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象 的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实 ...
- 1.3 迭代器 - iterator
A 1)概述 要访问顺序容器,关联容器中的元素就要通过迭代器进行.迭代器是个变量,类似于指针 2)分类 按照定义方式不同可分为四种(iterator, const_iterator, reverse_ ...
- 自动复制转换StringBuffer
自动复制转换StringBuffer http://www.cnblogs.com/coqn/archive/2012/07/31/all_StringBuufer.html http://blog. ...
- ARPPING
http://www.tuicool.com/articles/M7B3umj http://lixcto.blog.51cto.com/4834175/1571838/
- 设计模式学习之备忘录模式(Memento,行为型模式)(19)
假如我们已经记录一个人的个人信息,但是发现信息写错了,然后我先备份下再去修改,结果发现原来的信息是正确的,于是我就看备份的个人信息还原到初始的状态,下面我们用代码去实现 class Program { ...
- 回溯法解决N皇后问题(以四皇后为例)
以4皇后为例,其他的N皇后问题以此类推.所谓4皇后问题就是求解如何在4×4的棋盘上无冲突的摆放4个皇后棋子.在国际象棋中,皇后的移动方式为横竖交叉的,因此在任意一个皇后所在位置的水平.竖直.以及45度 ...
- SQL脚本书写的几点建议
1.索引很关键,创建合理的索引,提升查询速度: DBCC FREEPORCCACHE DBCC DROPCLEANBUFFERS ...
- poj 1003:Hangover(水题,数学模拟)
Hangover Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 99450 Accepted: 48213 Descri ...
- javascript中求浏览器窗口可视区域兼容性写法
1.浏览器窗口可视区域大小 1.1 对于IE9+.Chrome.Firefox.Opera 以及 Safari:• window.innerHeight - 浏览器窗口的内部高度• window. ...
- Ajax 数据库操作
为了清楚的说明使用 Ajax 从数据库中存取信息有多么容易,我们要构建一个 MySQL 查询,然后把结果显示在ajax.html 上.但是在我们开始之前,让我们先做一些基础工作.使用下面的命令创建一个 ...