【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 ...
随机推荐
- *IDEA真好用
使用maven做开发,在编辑pom.xml文件时
- Tomcat下的一些配置
1. JAVA虚拟机性能优化,修改bin下的 catalina.sh/bat rem ----- Execute The Requested Command -------------------- ...
- Linux卸载系统自带的httpd的方法
卸载linux自带的httpd服务: 方法一: #rpm -e httpd 结果,出现以下错误 httpd-mmn = 20020628 is needed by (installed) mod_pe ...
- Maven找不到java编译器的问题
当使用mvn package打包项目的时候,抛出下面这个错误: [ERROR] Unable to locate the Javac Compiler in: D:\jdk\..\lib\tools. ...
- S5P4418iNand清空方法
01连接串口线 02打开Fastboot的Xshell串口插件 03启动开发板 04一启动就输入回车键 05在uboot处停住,输入:mmc erase blk 10000 (mmc erase bo ...
- DataGridView控件的使用---添加行
最简单的方法 可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行. 假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控 ...
- AutoResetEvent
private static readonly AutoResetEvent autoResetEvent = new AutoResetEvent(false); private static vo ...
- CentOS5.5 正式开始安装 Oracle 11g r2(图形界面安装)
一.下载oracle 官方网站, 可以下载最新版本 Oracle Database 11g Release http://www.oracle.com/index.html CentOS5. i386 ...
- poj 2411 Mondriaan's Dream(状态压缩dP)
题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...
- 关于<img>标签与文字垂直居中
要让左边的图片与后面的文字居中,如下效果 HTML代码: <img class="iconCls" alt="最新客户端" src="${bas ...