【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 ...
随机推荐
- Intellij IDEA调试功能
public class Demo { public static void f1() { System.out.println("one"); System.out.printl ...
- Java虚拟机的内存组成以及堆内存介绍
一.java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启 ...
- JSF开篇之Login案例
开发环境:Myeclipse+JDK5+MyEclipse Tomcat+jsf2.2.8 JSF看起来和STRUTS还是有些像的,刚开始还是遇到一点问题:资源包的存放路径及文件访问路径. 开发Log ...
- TCP和UDP协议的应用/参数查看
TCP发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大的优点是可靠.一般网页(http).邮件(SMTP).远程连接(Telnet).文件(FT ...
- python 批量更换图片格式脚本
问题:将某文件下的所有jpg的图片更换为png的图片 简单的实现: # -*- coding:utf-8 -*- from os.path import splitext import glob fr ...
- java面试和笔试大全 分类: 面试 2015-07-10 22:07 10人阅读 评论(0) 收藏
2.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型 ...
- Tornado 中的 get() 或 post() 方法
---恢复内容开始--- Tornado 中的 get() 或 post() 方法 请求处理程序和请求参数 Tornado 的 Web 程序会将 URL 或者 URL 范式映射到 tornado.we ...
- poi操作oracle数据库导出excel文件
HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象 HSSFSheet sheet = workBook.createSheet( ...
- 基于Jquery+Ajax+Json+高效分页
摘要 分页我相信大家存储过程分页已经很熟悉了,ajax更是耳熟能详了,更别说我们的json,等等. 如果说您没用过这些东东的话,我相信看完这篇博文会对您有帮助的,,如果有任何问题不懂或者有bug没问题 ...
- git push 提示
我运行git push -u origin master 时提示如下: To git@github.com:userName/project.git ! [rejected] master -> ...