【Hadoop学习】Apache Hadoop ResourceManager HA
简介
本向导简述了YARN资源管理器的HA,并详述了如何配置并使用该特性。RM负责追踪集群中的资源,并调度应用程序(如MapReduce作业)。Hadoop2.4以前,RM是YARN集群中的单点故障。HA特性以Active/Standby RM对的形式对集群添加了冗余,从而消除了这种单点故障。
架构
RM故障恢复
RM HA是通过Active/Standby架构来实现的——任何时刻,有一个RM是活跃的(active),其他RM处于等待模式(Standby),等待当前活跃RM发生故障时可以接管其工作。模式切换的触发源来自管理员(通过CLI)或者通过集成的故障恢复控制器(在自动故障恢复使能时才会启用)。
手动切换A/S模式及故障恢复
当自动故障恢复没有使能时,管理员必须手动把某个RM切换成Active。为了从一个RM恢复到另个上,需要先把活跃的RM切换成Standby模式,再把其他某个Standby-RM切换成Active。所有操作都使用“yarn rmadmin”命令来完成。
自动故障恢复
RM有一个选项可以嵌入ZooKeeper-based ActiveStandbyElector来确定应该激活哪个RM。当活跃的RM宕机或者无响应时,另一个RM就会自动被选出来成为活跃RM并接管集群。注意,对于HDFS HA的情形,无需运行独立的ZKFC进程,因为嵌入在RM中的ActiveStandbyElector会取代独立的ZKFC进程来检查故障并选举leader。
RM故障恢复期间,客户端、AM和NodeManager的行为
存在多个RM时,客户端和节点所用的配置(yarn-site.xml)中列出了所有RM。客户端、AM和NodeManager都会以轮询的方式尝试连接这些RM直至找到活跃的RM为止。如果活跃的RM宕机了,那么它们就会继续轮询所有RM直至找到新的活跃RM为止。这种默认的重试逻辑是以org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider来实现的。你可以覆盖该逻辑,只需实现org.apache.hadoop.yarn.client.RMFailoverProxyProvider并设置属性yarn.client.failover-proxy-provider的值为你所实现的类名。
恢复先前活跃RM的状态
在使能了ResourceManager Restart的情况下, 新的活跃RM加载RM内部状态,并根据RM 重启特性尽可能从先前的活跃RM退出时的位置继续执行。重新尝试抓取之前已提交给RM的每一个受管理的应用程序。应用程序可以周期性地检查以免丢失任何工作。状态存储必须对Active/Standby RM都是可见的。当前,有两种RMStateStore用于持久化——FileSystemRMStateStore和ZKRMStateStore。ZKRMStateStore隐含地允许在任何时刻写访问到单个RM,因此,它是HA集群中推荐使用的存储。使用ZKRMStateStore时,there is no need for a separate fencing mechanism to address a potential split-brain situation where multiple RMs can potentially assume the Active role.
部署
配置
大部分故障恢复功能都可以使用各种配置属性来调整。下面是必要属性和重要属性列表。yarn-default.xml包含了完整的属性列表。详见yarn-default.xml,其中包含各属性的默认值。查看文档ResourceManger Restart 也可以获得有关创建state-store的指令。
配置属性 | 描述 |
yarn.resourcemanager.zk-address | ZK-quorum判决域主机地址。 用于state-store和嵌入式leader-election。 |
yarn.resourcemanager.ha.enabled | 使能RM HA |
yarn.resourcemanager.ha.rm-ids | RM的逻辑ID列表。如,"rm1,rm2" |
yarn.resourcemanager.hostname.rm-id | 为每一个rm-id与其相应的RM主机名。可以轮流设置每一个RM服务地址。 |
yarn.resourcemanager.ha.id | 用于标识集群中的RM。该参数是可选的;然而,如果设置了该参数,管理员就必须确保所有RM都配置了各自的ID。 |
yarn.resourcemanager.ha.automatic-failover.enabled | 使能自动故障恢复;默认情况下,只在HA使能时,它才会使能。 |
yarn.resourcemanager.ha.automatic-failover.embedded | 当自动故障恢复被使能时,使用嵌入式leader-elector选出活跃的RM。默认情况下,只在HA使能时,它才会使能。 |
yarn.resourcemanager.cluster-id | 标识集群。由elector用于确保当前集群的RM不会接管另一个集群的活跃RM的工作。 |
yarn.client.failover-proxy-provider | 由客户端、AM和NM用于故障恢复为活跃RM时的类。 |
yarn.client.failover-max-attempts | FailoverProxyProvider尝试故障恢复的最大次数。 |
yarn.client.failover-sleep-base-ms | 用于计算两次故障恢复之间延时的休眠时间基数。单位毫秒。 |
yarn.client.failover-sleep-max-ms | 两次故障恢复之间的最大休眠时间 |
yarn.client.failover-retries | 每次尝试连接ResourceManager的重试次数。 |
yarn.client.failover-retries-on-socket-timeouts | 每次尝试在socket超时时连接ResourceManager的重试次数。 |
示例配置
以下是创建RM故障恢复最少所需的属性配置。
<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.zk-address</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
管理命令
“yarn rmadmin ”命令用几个与HA相关的选项来检查RM的健康状态,并切换Active/Standby模式。HA命令采用由yarn.resourcemanager.ha.rm-ids属性所设置的RM服务ID作为参数。
$ yarn rmadmin -getServiceState rm1
active $ yarn rmadmin -getServiceState rm2
standby
如果自动故障恢复被使能了,那么你就可以不用手动切换命令了。
$ yarn rmadmin -transitionToStandby rm1
Automatic failover is enabled for org.apache.hadoop.yarn.client.RMHAServiceTarget@1d8299fd
Refusing to manually manage HA state, since it may cause
a split-brain scenario or other incorrect state.
If you are very sure you know what you are doing, please
specify the forcemanual flag.
详见YarnCommands。
ResourceManager Web UI服务
假设一个Standby RM上线并运行,那么该Standby RM会自动重定向所有的web请求到活跃的RM,除了RM各自的“About”页面。
Web 服务
假设一个Standby RM上线并运行,那么以ResourceManager REST APIs描述的RM web服务在Standby RM上唤醒时,会被重定向到活跃的RM。
【Hadoop学习】Apache Hadoop ResourceManager HA的更多相关文章
- 【Hadoop学习之四】HDFS HA搭建(QJM)
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...
- Hadoop记录-Apache hadoop+spark集群部署
Hadoop+Spark集群部署指南 (多节点文件分发.集群操作建议salt/ansible) 1.集群规划节点名称 主机名 IP地址 操作系统Master centos1 192.168.0.1 C ...
- Hadoop org.apache.hadoop.util.DiskChecker$DiskErrorException问题等价解决linux磁盘不足解决问题排查
org.apache.hadoop.util.DiskChecker$DiskErrorException问题等价解决linux磁盘不足解决问题排查 解决"/dev/mapper/cento ...
- Hadoop学习之Hadoop集群搭建
1.检查网络状况 Dos命令:ping ip地址,同时,在Linux下通过命令:ifconfig可以查看ip信息2.修改虚拟机的ip地址 打开linux网络连接,在桌面右上角,然后编辑ip地址, ...
- hadoop学习;hadoop伪分布搭建
先前已经做了准备工作安装jdk什么的,以下開始ssh免password登陆.这里我们用的是PieTTY工具,当然你也能够直接在linux下直接操作 ssh(secure shell),运行命令 ssh ...
- Hadoop学习笔记——Hadoop经常使用命令
Hadoop下有一些经常使用的命令,通过这些命令能够非常方便操作Hadoop上的文件. 1.查看指定文件夹下的内容 语法: hadoop fs -ls 文件文件夹 2.打开某个已存在的文件 语法: h ...
- 二十六、Hadoop学习笔记————Hadoop Yarn的简介复习
1. 介绍 YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度. 之前有提到过,Yarn主要是为了减轻Hadoop ...
- hadoop学习之hadoop完全分布式集群安装
注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...
- Hadoop学习之Hadoop案例分析
一.日志数据分析1.背景1.1 ***论坛日志,数据分为两部分组成,原来是一个大文件,是56GB:以后每天生成一个文件,大约是150-200MB之间: 每行记录有5部分组成:1.访问ip:2.访问时间 ...
- Hadoop学习笔记Hadoop伪分布式环境建设
建立一个伪分布式Hadoop周围环境 1.主办(Windows)顾客(安装在虚拟机Linux)网络连接. a) Host-only 主机和独立客户端联网: 好处:网络隔离: 坏处:虚拟机和其他serv ...
随机推荐
- HTTP会话原理解释与应用
一.什么是会话 首先解释一下什么是会话.在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程.会话较多用于网络上,TCP的三次握手 ...
- UNIX 高手的 20 个习惯[转]
使用 mkdir 的 -p 选项并在单个命令中创建所有父目录及其子目录要容易得多.但是即使对于知道此选项的管理员,他们在命令行上创建子目录时也仍然束缚于逐步创建每级子目录.花时间有意识地养成这个好习惯 ...
- PHP大神的十大优良习惯
概述:通往PHP大神的道路上,应该保持优良的传统和习惯. 1.多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些 ...
- java知识积累——单元测试和JUnit(二)
首先来复习一下几个重要知识点,然后接着进行一些介绍.在上一篇文章中,我曾经贴过下面这张图片: 在Which method stubs would you like to create?这里,现在结合4 ...
- Android开发之“点9”
“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在 ...
- git push
使用git push直接推送未关联分支的时候,出现如下提示: $ git push Counting objects: 46, done. Delta compression using up to ...
- vi编辑器基本用法介绍
vi是Linux系统中编写文件的工具 如果vi出现乱码情况,需要升级vi,命令如下: sudo apt-get install vim //升级vi vi的启动方式有两种,直接使用vi命令和在vi命 ...
- hdu 4901 The Romantic Hero (dp)
题目链接 题意:给一个数组a,从中选择一些元素,构成两个数组s, t,使s数组里的所有元素异或 等于 t数组里的所有元素 位于,求有多少种构成方式.要求s数组里 的所有的元素的下标 小于 t数组里的所 ...
- 配置hibernate根据实体类自动建表功能
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<propert ...
- basicjava
.完数 . 第一个完全数是6,它有约数1.2.3.6,除去它本身6外,其余3个数相加,1+2+3=6.第二个完全数是28,它有约数1.2.4.7.14. 28,除去它本身28外,其余5个数相加,1+2 ...