[RM HA3] Zookeeper在RM HA的应用
[RM HA3] Zookeeper在RM HA的应用
RM HA(ResourceManager HighAvailability)中使用Zookeeper的地方在ZKRMStateStore和ZKFailoverController,ZKRMStateStore继承于抽象类RMStateStore,从名字上可以看出RMStateStore是存储RM状态的存储器,ZKRMStateStore是其中的一种实现——使用Zookeeper存储RM状态。抽象类ZKFailoverController通过Zookeeper实现Master的Auto Failover,社区最新版本2.3只用在HDFS上控制Namanode的Auto Failover,RM还没有Auto Failover功能, CLoudera5已经实现了Namanode,Jobtracker和RM的Auto Failover。
本文简要介绍了Zookeeper在RM HA的应用。
问题1,Zookeeper存储哪些RM状态信息,如何存储?
RM HA第一个需要解决的问题是存储RM的状态信息,需要存储的信息包括app的状态,作业的TOKEN等。Zookeeper存储RM状态的目录格式如下所示:
* ROOT_DIR_PATH
* |--- VERSION_INFO
* |--- RM_ZK_FENCING_LOCK
* |--- RM_APP_ROOT
* | |----- (#ApplicationId1)
* | | |----- (#ApplicationAttemptIds)
* | |
* | |----- (#ApplicationId2)
* | | |----- (#ApplicationAttemptIds)
* | ....
* |
* |--- RM_DT_SECRET_MANAGER_ROOT
* |----- RM_DT_SEQUENTIAL_NUMBER_ZNODE_NAME
* |----- RM_DELEGATION_TOKENS_ROOT_ZNODE_NAME
* | |----- Token_1
* | |----- Token_2
* | ....
* |
* |----- RM_DT_MASTER_KEYS_ROOT_ZNODE_NAME
* | |----- Key_1
* | |----- Key_2
* ....
可以看到,存储的信息主要包Application和SECRET_MANAGER(安全与权限相关)的信息。
问题2,如何实现Fencing(隔离)?
RM HA另一个需要解决的问题是如何防止两个RM(或一个RM的多个线程)同时对一个Zookeeper上的文件操作(包括读写,创建,删除等),这时就需要增加Fencing机制来保证。
由于RM HA使用的Zookeeper的权限控制实现Fencing,所以首先需要了解Zookeeper的权限控制方法。简单的说,在Zookeeper上创建目录的时候,需要指定用户和相应的权限,例如创建一个目录时可以指定只有自己能对这个目录读写,其他用户只有读的权限。
首先,ZKRMStateStore初始化的时候会创建ROOT_DIR_PATH,并指定该目录只有自己有读写权限,其他用户只有读权限。其次,在每一个ApplicationID目录进行操作的时,都需要现创建一个LOCK文件,创建成功后才开始实际的操作,操作结束后删除LOCK文件。如果创建LOCK文件抛出权限异常,说明这个目录是其他RM(RM HA环境下至少存在两个RM)创建的,这时候RM会强制让自己转换为standby;如果抛出其他的异常,则说明RM的多个线程可能同时对一个目录操作,这是不允许的,这时候RM会强制自己停止工作并退出进程。
问题3,ZKFailoverController如何实现RM的Auto Failover
ZKFailoverController中维护着 ActiveStandbyElector 和HealthMonitor , ActiveStandbyElector主要工作是。
1. 初始化时在 ZK 上创建一个Lock 文件,
2. Standby RM运行过程中监控 ZM 上的Lock 文件是否存在。
HealthMonitor的主要工作是检查自己(RM)的健康状态,通过 HAServiceStatus提供的 getServiceStatus() 和monitorHealth() 方法,如果自己健康的,则会试图创建 Lock 文件,按照结果成为 active或 standby 。
[RM HA3] Zookeeper在RM HA的应用的更多相关文章
- Zookeeper 三台主机 Ha集群的搭建
前期准备1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 /etc/hosts ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等 ...
- 【Zookeeper】利用zookeeper搭建Hdoop HA高可用
HA概述 所谓HA(high available),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA. ...
- xargs rm -rf 与 -exec rm
# find ./ -exec rm {} \; # find ./ | xargs rm -rf 两者都可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exe ...
- Apache版本的Hadoop HA集群启动详细步骤【包括Zookeeper、HDFS HA、YARN HA、HBase HA】(图文详解)
不多说,直接上干货! 1.先每台机器的zookeeper启动(bigdata-pro01.kfk.com.bigdata-pro02.kfk.com.bigdata-pro03.kfk.com) 2. ...
- 部署hadoop2.7.2 集群 基于zookeeper配置HDFS HA+Federation
转自:http://www.2cto.com/os/201605/510489.html hadoop1的核心组成是两部分,即HDFS和MapReduce.在hadoop2中变为HDFS和Yarn.新 ...
- rm -f + 文件名+* 与 rm -f + 文件名* 的不同效果,大坑呀。
rm -f catalina.2018-10-22.* 与*号间无空格 rm -f catalina.2018-10-22. * :多了空格:
- 3.16 使用Zookeeper对HDFS HA配置自动故障转移及测试
一.说明 从上一节可看出,虽然搭建好了HA架构,但是只能手动进行active与standby的切换: 接下来看一下用zookeeper进行自动故障转移: # 在启动HA之后,两个NameNode都是s ...
- [RM HA 2] Hadoop 2.0 ResourceManager HA原理
继上篇文章验证Cloudera RM HA功能后,现在开始分析Cloudera RM HA的原理. 设计目标 主要目的是为了解决两种问题 计划外的机器挂掉 计划内的如软件和硬件升级等. 架构 流程:两 ...
- 3.19 YARN HA架构及(RM/NM) Restart讲解
一.ResourceManager HA ResourceManager(RM)负责跟踪集群中的资源,以及调度应用程序(例如,MapReduce作业). 在Hadoop 2.4之前,ResourceM ...
随机推荐
- extjs 表格可复制
在GridPanel的配置项中,加入这个配置就可以了: viewConfig:{ enableTextSelection:true }
- jsapi支付,提示redirect_uri 参数错误
检查授权目录(微信支付——配置中心) appid MCHID KEYS 配置参数是否正确 appsecrect 配置是否正确(开发者中心) 如果是使用测试链接,需要同时指定测试授权目录,测试账号,并且 ...
- 整理了一下 jQuery 的原型关系图,理解起来更加方便一些。
图例:黄色的为对象,蓝色的为函数.
- Chr()和chrb()的含义(转)
http://blog.csdn.net/cunxiyuan108/article/details/5989701 Chr(charcode) 必要的 charcode 参数是一个用来识别某字符的 L ...
- 用C语言实现的扑克牌洗牌程序
一副牌:54张 从0开始排序: 0-12表示黑桃 A 1,2,3,... 10,J,Q,K 13-25表示红桃 A 1,2,3,... 10,J,Q,K 26-38表示草花 A 1,2,3,... ...
- .net sql 防注入 httpmodule
1 新建一个类,实现IHttpModule接口 using System; using System.Collections.Generic; using System.Linq; using Sys ...
- 解决a different object with the same identifier value was already associated with the session错误
[转]解决a different object with the same identifier value was already associated with the session错误 这个错 ...
- Struts2中的ModelDriven机制及其运用(转)
所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...
- cas 登陆超时 解决方案
在配置文件ticketExpirationPolicies.xml中配置: <bean id="grantingTicketExpirationPolicy" class=& ...
- cookie和session的代码实现
cookie和session的代码实现 1.设置cookie 今天笔试题考的是cookie的设置,我竟然选了request也可以设置cookie,我的天呀. 我们来看如何在response设置吧 pu ...