[RM HA 2] Hadoop 2.0 ResourceManager HA原理
继上篇文章验证Cloudera RM HA功能后,现在开始分析Cloudera RM HA的原理。
设计目标
主要目的是为了解决两种问题
- 计划外的机器挂掉
- 计划内的如软件和硬件升级等.
架构
流程:两个RM, 启动的时候都是standby, 进程启动以后状态未被加载, 转换为active后才会加载相应的状态并启动服务. RM的状态通过配置可以存储在zookeeper, HDFS上。Standby转换到active可以通过命令或开启auto failover。

- RM 的作业信息存储在ZK的/rmstore下,Active RM向这个目录写App信息。
- RM启动的时候会通过向ZK的/hadoop-ha目录下写一个Lock文件,写成功则成为Active,否则为Standby,Standby RM会一直监控Lock文件是否存在,如果不存在则会试图去创建,即争取成为Active RM。
- 当Active RM挂掉,另外一个Standby RM成功转换为Active RM后,会从/rmstore读取相应的作业信息,重新构建作业的内存信息。然后启动内部服务,开始接收NM的心跳,构建集群资源信息,并接收客户端提交作业的请求等。
社区trunk版本当前也已经支持RM HA,但只支持手动切换,不支持Auto Failover。社区的基本原理和Cloudera RM HA类似,其架构图如下图所示:

对比Cloudera RM HA的架构图,仅少了Auto Failover部分。
服务端RM HA的关键部分主要为RMStateStore和ZKFailoverController。RMStateStore是实现RM状态存储的基类,主要包括存储和加载RM状态等方法。实现类主要包括FileSystemRMStateStore和ZKRMStateStore。类图如下图所示。

ZKFailoverController中维护着ActiveStandbyElector和HealthMonitor,ActiveStandbyElector主要工作是。
1. 初始化时在ZK上创建一个Lock文件,
2. Standby RM运行过程中监控ZM上的Lock文件是否存在。
HealthMonitor的主要工作是检查自己(RM)的健康状态,通过HAServiceStatus提供的getServiceStatus()和monitorHealth()方法,如果自己健康的,则会试图创建Lock文件,按照结果成为active或standby。下图是ZKFailoverController的类图,图中可以看出,Cloudera的Hadoop版本中,NameNode、Jobtracker和ResourceManager都采用相同的Auto Failover机制。

客户端的实现机制
在RM HA之前,客户端与RM的通信直接使用ApplicationClientProtocol等协议,增加RM HA后,客户端使用RetryPolicy,它提供了一种重试机制,但一个RM连不上,则会Failover到另外一台RM上。具体的实现方法是采用动态代理模式,增加RMProxy实现retry方式连接RM。下图是RMProxy的类图。

其中ClientRMProxy,代理ApplicationClientProtocol、ApplicationMasterProtocol、ResourceManagerAdministrationProtocol,实现 Yarn client、AM与RM的连接。ServerRMProxy提供给NM连接RM使用。代理ResourceTracker。
[RM HA 2] Hadoop 2.0 ResourceManager HA原理的更多相关文章
- Hadoop 2.0 NameNode HA和Federation实践【转】
Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...
- Hadoop 2.0中单点故障解决方案总结
Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题, ...
- 安装部署Apache Hadoop (完全分布式模式并且实现NameNode HA和ResourceManager HA)
本节内容: 环境规划 配置集群各节点hosts文件 安装JDK1.7 安装依赖包ssh和rsync 各节点时间同步 安装Zookeeper集群 添加Hadoop运行用户 配置主节点登录自己和其他节点不 ...
- Hadoop NameNode HA 和 ResourceManager HA
1.集群规划 1.1 规划说明 hadoop1 cluster1 nameNode hadoop2 cluster1 nameNodeStandby ZooKeeper ResourceManager ...
- 【Hadoop学习】Apache Hadoop ResourceManager HA
简介 本向导简述了YARN资源管理器的HA,并详述了如何配置并使用该特性.RM负责追踪集群中的资源,并调度应用程序(如MapReduce作业).Hadoop2.4以前,RM是YARN集群中的单点故障. ...
- 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)
1)集群规划:主机名 IP 安装的软件 运行的进程master 192.168.199.130 jdk.hadoop ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Hadoop 2.7.3 HA 搭建及遇到的一些问题
看了Hadoop的一个7天视频教程,里面给出了搭建的详细步骤,教程中是按2.4.1版本搭建的,我用的是2.7.3版本,好像没什么差别.下面是抄过来的,加了一点注释. hadoop2.0已经发布了稳定版 ...
- Hadoop2.0 Namenode HA实现方案
Hadoop2.0 Namenode HA实现方案介绍及汇总 基于社区最新release的Hadoop2.2.0版本,调研了hadoop HA方面的内容.hadoop2.0主要的新特性(Hadoop2 ...
随机推荐
- CPU 材料学才是最顶级的学科
cpu的物理组成3部分:逻辑部件.寄存器.控制部件 CPU具有以下4个方面的基本功能:数据通信,资源共享,分布式处理,提供系统可靠性 cpu处理4过程:提取.解码.执行.写回 http://baike ...
- scjp考试准备 - 2 - 逻辑运算及类型转换
判断如下代码的执行结果: public class Spock{ public static void main(String[] args){ Long tail = 2000L; Long dis ...
- 006--VS2013 C++ 加载其他格式图片,并显示半透明化
//--------------------------------------------MyPaint() 函数------------------------------------------ ...
- Android 锁屏软件MemoryDebris测试报告
目 录 项目基本信息 第1章 引言 1.1 编写目的 1.2 项目背景 1.3 参考资料 1.4 术语和缩略语 第2章 ...
- hdu 3007 Buried memory 最远点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3007 Each person had do something foolish along with ...
- Phyre LCUE with YEBIS cause issues about GS
when LCUE enabled in phyreEngine when Yebis integrated and render there are two mainloopdraws in one ...
- [百度空间] [转] 在 Visual C++ 中控制全局对象的初始化顺序
from: http://blog.csdn.net/classfactory/archive/2004/08/07/68202.aspx 在 C++ 中,同一个翻译单位(.cpp文件)里的全局对象的 ...
- .NET设计模式(7):创建型模式专题总结(Creational Pattern)(转)
概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...
- PowerDesigner(一)-PowerDesigner概述(系统分析与建模)(转)
PowerDesigner概述 PowerDesigner是Sybase公司推出的一个集成了企业架构,UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具.它不仅可以用于系统设计和开发的 ...
- ASP.NET页面优化性能提升方法记录
今天与大家分享:一种优化页面执行速度的方法.采用这个方法,可以使用页面的执行速度获得[8倍]的提升效果. 为了让您对优化的效果有个直观的了解,我准备了下面的测试结果截图: 测试环境:1. Window ...