hadoop官方文档学习笔记(1)——resource manager HA

resource manager HA是hadoop自从2.4之后推出的功能,以Active/Standby的方式提供冗余,目的是为了消除单点失败的风险。

1、总体架构:

2、故障切换:有自动和手动两种形式。

手动:如果以手动形式切换,使用yarn haadmin命令首先将Active节点转为standby,再将standby节点转为active。

自动:RM有基于zookeeper的节点选举机制决定哪一个是活动节点。不需要像HDFS一样部署一个zkfc守护进程,因为RM内嵌了这样的功能。

做了rm的HA之后,所有节点和客户端都要列出所有RM节点,连接时会用轮询的方式遍历,直到找到一个active的节点。如果活动节点down了,它们会继续轮询。这一动作被实现为org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider类。可以通过重新实现该类,并在yarn.client.failover-proxy-provider 配置项中指定新的类名来改写这一行为逻辑。


3、配置

Configuration Properties Description
yarn.resourcemanager.zk-address Address of the ZK-quorum. Used both for the state-store and embedded leader-election.
yarn.resourcemanager.ha.enabled Enable RM HA.
yarn.resourcemanager.ha.rm-ids List of logical IDs for the RMs. e.g., “rm1,rm2”.
yarn.resourcemanager.hostname.rm-id For each rm-id, specify the hostname the RM corresponds to. Alternately, one could set each of the RM’s service addresses.
yarn.resourcemanager.address.rm-id For each rm-id, specify host:port for clients to submit jobs. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.scheduler.address.rm-id For each rm-id, specify scheduler host:port for ApplicationMasters to obtain resources. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.resource-tracker.address.rm-id For each rm-id, specify host:port for NodeManagers to connect. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.admin.address.rm-id For each rm-id, specify host:port for administrative commands. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.webapp.address.rm-id For each rm-id, specify host:port of the RM web application corresponds to. You do not need this if you set yarn.http.policy to HTTPS_ONLY. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.webapp.https.address.rm-id For each rm-id, specify host:port of the RM https web application corresponds to. You do not need this if you set yarn.http.policy to HTTP_ONLY. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.
yarn.resourcemanager.ha.id Identifies the RM in the ensemble. This is optional; however, if set, admins have to ensure that all the RMs have their own IDs in the config.
yarn.resourcemanager.ha.automatic-failover.enabled Enable automatic failover; By default, it is enabled only when HA is enabled.
yarn.resourcemanager.ha.automatic-failover.embedded Use embedded leader-elector to pick the Active RM, when automatic failover is enabled. By default, it is enabled only when HA is enabled.
yarn.resourcemanager.cluster-id Identifies the cluster. Used by the elector to ensure an RM doesn’t take over as Active for another cluster.
yarn.client.failover-proxy-provider The class to be used by Clients, AMs and NMs to failover to the Active RM.
yarn.client.failover-max-attempts The max number of times FailoverProxyProvider should attempt failover.
yarn.client.failover-sleep-base-ms The sleep base (in milliseconds) to be used for calculating the exponential delay between failovers.
yarn.client.failover-sleep-max-ms The maximum sleep time (in milliseconds) between failovers.
yarn.client.failover-retries The number of retries per attempt to connect to a ResourceManager.
yarn.client.failover-retries-on-socket-timeouts The number of retries per attempt to connect to a ResourceManager on socket timeouts.

4、示例(最小配置)

<property>  <name>yarn.resourcemanager.ha.enabled</name>  <value>true</value></property><property>  <name>yarn.resourcemanager.cluster-id</name>  <value>cluster1</value></property><property>  <name>yarn.resourcemanager.ha.rm-ids</name>  <value>rm1,rm2</value></property><property>  <name>yarn.resourcemanager.hostname.rm1</name>  <value>master1</value></property><property>  <name>yarn.resourcemanager.hostname.rm2</name>  <value>master2</value></property><property>  <name>yarn.resourcemanager.webapp.address.rm1</name>  <value>master1:8088</value></property><property>  <name>yarn.resourcemanager.webapp.address.rm2</name>  <value>master2:8088</value></property><property>  <name>yarn.resourcemanager.zk-address</name>  <value>zk1:2181,zk2:2181,zk3:2181</value></property>

5、管理命令

查看节点状态: $ yarn rmadmin -getServiceState rm1 active

 $ yarn rmadmin -getServiceState rm2 standby

故障切换:

 $ yarn rmadmin -transitionToStandby rm1 $ yarn rmadmin -transitionToActive rm2

注意:  开启自动故障切换后,系统为防止造成脑裂或其它不一致的状态,会拒绝人为管理HA状态。如果非常清楚自己的行为,可以在切换命令中指定-forcemanual选项。
时间: 2024-10-19 00:11:28

hadoop官方文档学习笔记(1)——resource manager HA的相关文章

NFC官方文档学习笔记(一):NFC前台调度

上Android开发官网看下下NFC相关知识,发现在网上相关的介绍也非常多,我也滥竽充数地写一个学习记录,就是官方API DEMO中的COPY版本. /** * NFC前台调度: 读取NDEF数据:一个NFC标签处理与标签的调度系统,分析发现的NFC标签,适当 * 地对数据进行分类,并启动一个应用程序.在分类的数据中,要处理扫描NFC标签 的应用程序可以声明一个 intent filter来处理数据请求. * */ public class ForegroundDispatch extends

Less 官方文档学习笔记

LESS 是css的一种扩展,它的编辑器是基于node.js 的less.js,将less文件编译成css文件(可压缩). 其中的概念: 变量:定义变量来代替某个值,只能编译一次,本质是“常量”.例如: @color:#ffddee; body { background-color:@color; } 输出的结果为: body { background-color:#ffddee; } 变量是延时加载的,只有用到的时候才会加载.变量的查找顺序是从下到上,最近优先. 混合(Mixin): 在一个选

jenkins官方文档学习笔记 初识Jenkins

什么是jenkins? Jenkins是一个用来监控重复工作的受到嘉奖的应用,比如构建一个软件项目或者定时执行的任务. 在这些工作中,Jenkins主要专注与以下两项工作: 1,持续构建/测试软件项目,Jenkens提供简单易用的所谓的持续集成系统,让开发者把变动集成到项目中变的更简单,让用户获得一个新的构建.自动持续的集成提高了生产效率. 2,监控外部调用执行的工作,比如cron jobs和procmail jobs,即使这些功能运行在远程机器上.例如,定时任务中,你会定期的收到捕获输出的邮件

Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolvers,可以让你在浏览器中render model,而不必绑定到某种特定的view技术上.开箱即用,例如,Spring可以让你使用JSPs.Velocity目标和XSLT views.See Chapter 23, View technologies for a discussion of how

Spring 4 官方文档学习(十二)View技术

1.介绍 Spring 有很多优越的地方,其中一个就是将view技术与MVC框架的其他部分相隔离.例如,在JSP存在的情况下使用Groovy Markup Templates 还是使用Thymeleaf,仅仅是一个配置问题. 本章覆盖了主要的view技术,嗯嗯,可以与Spring结合的那些,并简明的说明了如何增加新的view技术. 本章假定你已经熟悉了Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图 -- 它覆盖了views如何耦合到MVC框架

Effective Go(官方文档)笔记

Effective Go(官方文档)笔记 自己主动局部变量提升(编译期完毕?):return &...; 内置函数: new/make copy, append delete range(这是keyword吧?由于后面没有()) array是值对象 slice:引用array 2维切片(略) map if seconds, ok := timezone[tz]; ok { ... func (f *File) Read(buf []byte) (n int, err error) { ... 注

TensorFlow官方文档入门笔记[一]

TensorFlow官方文档入门笔记[一] 张量 3 # a rank 0 tensor; this is a scalar with shape [] [1., 2., 3.] # a rank 1 tensor; this is a vector with shape [3] [[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3] [[[1., 2., 3.]], [[7., 8., 9.]]] #

根据ThinkPHP官方文档学习opensns框架

根据ThinkPHP官方文档学习opensns框架 1.解读Application下各个Controller文件夹下的作用 控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller 控制器文件的命名方式是:类名+class.php(类文件后缀) namespace Weibo\Controller; ///这是系统的规范要求,表示当前类是weibo模块下的控制器类,与实际路径一致 use Think\Controller; //引入 Think\Controller 类库便于直

React官方文档学习记录(四)- 条件渲染

一点点记录,建议需要学习React的移步官方文档去学习. 在React中,你可以创建一个清晰(distinct)的组件来简要描述你现在需要的东西.然后,你只需要使用你应用中的state来渲染它们. React中的条件型渲染跟JavaScript中的条件运算符运行方式差不多.好像就是使用JavaScript中的if或者三元运算符创建元素来显示现在的状态,然后让React更新UI来匹配这些修改. 下面这个例子就是根据不同的isLoggedIn进行不同的欢迎. 1 2 3 4 5 6 7 8 9 10