介绍
本指南提供YARN的ResourceManager 的HA概览,以及如何配置和使用这些特性。ResourceManager(RM)负责跟踪集群中的资源,调度application(如MapReduce job)。hadoop 2.4之前,ResourceManager在YARN集群中存在单点故障的隐患。HA特性通过主备ResourceManager的方案解决单点故障问题。
架构
RM灾备
ResourceManager HA通过主备架构实现——在任意时刻,一个RM处于Active模式,另外一个或者多个处于Standby模式,等待某种情况发生则转为Active模式。切换为Active的触发器要么来自管理员(通过CLI)或者是在automatic-failover启用的情况下通过集成的 failover-controller。
手动切换和灾备
在自动灾备没有启用时,管理员不得不手动切换其中一个RM到Active。要切换灾备的RM到另一个,需要首先切换Active-RM为Standby,然后切换一个Standby-RM到Active。所有这些都可以使用 “yarn rmadmin” 客户端命令完成.
自动灾备
RM有一个选项可以嵌入基于Zookeeper的主备选举来决定哪一个RM应该为Active。当Active宕机或者变成不可用,其他RM自动被选举为Active。请注意,没有必要像HDFS的运行一个独立的ZKFC进程,因为嵌入到RM的主备选举模块扮演失败探测和leader选举,替换了独立的ZKFC进程。
Client, ApplicationMaster and NodeManager on RM failover
当有多个RM时,client和node使用的配置文件(yarn-site.xml)将列出所有RM。Client,ApplicationMasters(AMs)和NodeManagers(NMs)采用round-robin的方式尝试连接RM,直到命中Active的RM。如果这个Active宕机,他们会继续采用 round-robin 的方式轮询直到命中新的Active。默认的重试逻辑实现是org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider。你可以通过实现org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider并设置yarn.client.failover-proxy-provider的值为这个类的类名,以此覆写相应逻辑。
恢复之前Active-RM的状态
在ResourceManger Restart开启之后,被提升为Active状态的RM依赖RM restart特性会加载上一个Active的RM的内部状态并尽可能继续处理其剩余的工作。之前提交到RM的每一个Application都会催生一个新的attempt 。Applications可以周期性的设置checkpoint以此避免丢失工作内容。state-store必须对主备RM都可见。当前有两种RMStateStore持久化实现-FileSystemRMStateStore 和ZKRMStateStore.
ZKRMStateStore 隐性的允许任意时刻都可以对RM进行写操作,因此其被作为在HA集群中推荐使用的存储。在使用ZKRMStateStore时,没有必要独立解决潜在的脑裂问题。在使用ZKRMStateStore时,建议在Zookeeper集群中不要设置“zookeeper.DigestAuthenticationProvider.superDigest”属性,以确保zookeeper管理员不能具有访问YARN application/用户的证书信息。
部署
配置
灾备的大部分功能都可以通过各种各样的配置属性进行调整。以下是一个重要的说明列表。
Configuration Properties | Description |
yarn.resourcemanager.zk-address | zk的地址。用于 state-store和嵌入式的leader选举。 |
yarn.resourcemanager.ha.enabled | 启用RM的HA。 |
yarn.resourcemanager.ha.rm-ids | RM的逻辑id列表,如 “rm1,rm2”. |
yarn.resourcemanager.hostname.rm-id | 对每个rm-id,指定rm对应的hostname。或者,可以指定每个RM的服务地址。 |
yarn.resourcemanager.address.rm-id | 指定每一个rm-id的host:port。如果设置则会覆盖 yarn.resourcemanager.hostname.rm-id设置的hostname. |
yarn.resourcemanager.scheduler.address.rm-id | 对每个rm-id指定applicationMaster获取资源的调度器地址-host:port。如果设置,会覆盖yarn.resourcemanager.hostname.rm-id设置的hostname。 |
yarn.resourcemanager.resource-tracker.address.rm-id | 对每个rm-id设置NodeManager连接的host:port。如果设置, 会覆盖yarn.resourcemanager.hostname.rm-id设置的hostname。 |
yarn.resourcemanager.admin.address.rm-id | 对每个rm-id指定管理命令的host:port. 如果设置, 会覆盖yarn.resourcemanager.hostname.rm-id设置的hostname。 |
yarn.resourcemanager.webapp.address.rm-id | 对每个rm-id,指定RM webapp对应的host:port。如果你设置了 yarn.http.policy为HTTPS_ONLY,则不需要本属性。 如果设置, 会覆盖yarn.resourcemanager.hostname.rm-id设置的hostname。 |
yarn.resourcemanager.webapp.https.address.rm-id | 对每个rm-id指定RM https webapp相应的host:port。如果你设定了 yarn.http.policy 为HTTP_ONLY,那么你就不需要该属性。 如果设置, 会覆盖yarn.resourcemanager.hostname.rm-id设置的hostname。 |
yarn.resourcemanager.ha.id | RM在集群中的标识。这是可选的;然而如果设置,管理员需要确保在配置中所有的RM都有唯一的标识。 |
yarn.resourcemanager.ha.automatic-failover.enabled | 启用自动灾备。默认只有在HA启用的时候才启动。 |
yarn.resourcemanager.ha.automatic-failover.embedded | 当自动灾备启用之后,使用嵌入式的leader选举Active RM。默认只在HA启用后该项才启用。 |
yarn.resourcemanager.cluster-id | 集群标识。 |
yarn.client.failover-proxy-provider | Client、AMs和NMs应对Active RM failover使用的class。 |
yarn.client.failover-max-attempts | FailoverProxyProvider 的最大尝试次数。 |
yarn.client.failover-sleep-base-ms | 用于计算Failover之间的delay指数的sleep基数(毫秒为单位) |
yarn.client.failover-sleep-max-ms | failover之间的最大sleep时间(毫秒为单位)。 |
yarn.client.failover-retries | 每个attempt 重试连接 ResourceManager的次数。 |
yarn.client.failover-retries-on-socket-timeouts | 每个 attempt 连接到ResourceManager socket超时的次数。 |
样例配置
这里是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.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>
管理命令
yarn rmadmin有一小部分HA特定的命令选项,用来检查RM的健康的或者状态,以及在Active/StandyBy之间切换。HA的这些命令采用RM的服务Id(在yarn.resourcemanager.ha.rm-ids 中设置的)作为参数
$ yarn rmadmin -getServiceState rm1 active $ yarn rmadmin -getServiceState rm2 standby
如果自动灾备是启用的,你不能使用手动切换命令。虽然你能通过-forcemanual标识强行覆盖它,这点你需要注意。
$ 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.
ResourceManager Web UI services
假定一个standby RM是运行的,该Standby自动重定向所有的web请求到Active,除了“About”页面之外。
Web Services
假定一个standby RM是运行中,RM web-service在请求到standy时会自动重定向到Active RM。
相关推荐
赠送jar包:hadoop-yarn-server-...标签:server、apache、resourcemanager、hadoop、yarn、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性
hadoop2.7.4安装包补丁包,解决yarn定时调度启动问题!!
Hadoop 2.7.2引入了YARN(Yet Another Resource Negotiator),作为资源管理框架,负责调度和管理集群中的计算资源。相比早期版本,YARN提高了系统的可扩展性和安全性,降低了MapReduce的耦合度,使得其他计算框架如...
1. YARN改进:在Hadoop 2.7.2中,YARN(Yet Another Resource Negotiator)进一步提升了资源管理效率,优化了任务调度算法,降低了作业启动延迟,增强了系统的整体性能。 2. HDFS增强:增加了对大文件的支持,改进...
Hadoop 2.7.2是Hadoop发展过程中的一个重要版本,它提供了许多增强特性和稳定性改进,使得大规模数据处理变得更加高效和可靠。在这个版本中,主要包含两个核心组件:HDFS(Hadoop Distributed File System)和...
【标题】"Hadoop YARN Server ResourceManager 2.3.0" Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop项目中的一个核心组件,它负责管理集群资源的分配和调度,使得大数据处理任务得以高效执行。...
- YARN:作为Hadoop的资源管理器,YARN在2.7.2版本中进一步提升了多应用程序并行运行的效率,优化了资源调度算法,减少了任务调度的延迟。 - HDFS:增强了HDFS的容错性和可用性,如改进了数据块的复制策略,提高了...
2. HA(High Availability):Hadoop 2.7.2支持NameNode的高可用性,通过Active/Passive模式,确保即使主NameNode出现故障,系统也能无缝切换到备用NameNode,避免服务中断。 3. Federation:NameNode Federation...
Hadoop 2.7.2是一个稳定版本,包含了分布式存储(HDFS)和计算框架(MapReduce),是大数据处理的基础。以下是关于如何在CentOS 7 64位系统上编译Hadoop 2.7.2源码库文件的详细步骤及相关的知识点: 1. **环境准备*...
标签:apache、hadoop、api、yarn、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
Hadoop2.7.2LIUNX集群(2)所需JDK1.8.gzHadoop2.7.2LIUNX集群(2)所需JDK1.8.gzHadoop2.7.2LIUNX集群(2)所需JDK1.8.gzHadoop2.7.2LIUNX集群(2)所需JDK1.8.gz
标签:apache、client、hadoop、yarn、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
Windows10 环境下编译的Hadoop2.7.2 Windows10 环境下编译的Hadoop2.7.2 Windows10 环境下编译的Hadoop2.7.2
在源码中,`hadoop-yarn-project`目录包含了ResourceManager、NodeManager、ApplicationMaster等相关组件的源代码。 4. **Common模块**:`hadoop-common`包含了Hadoop框架的公共库,包括网络通信、配置管理、安全、...
本文档将详细介绍如何搭建一个Hadoop 2.7.2版本的高可用(High Availability,简称HA)集群。此集群将包含五台服务器,分别命名为cancer01至cancer05,其中两台作为NameNode节点(活跃与备用),一台作为JournalNode...
较新版本的Hadoop2.x.y系列包括了YARN(Yet Another Resource Negotiator),这是一个资源管理平台,它改进了资源管理和作业调度的机制。老版本的Hadoop,如0.20或1.2.1版本,虽然在本教程中未详细涉及,但本教程的...
hadoop2.7.2安装依赖文件,用于在window下调试hadoop! hadoop2.7.2安装依赖文件,用于在window下调试hadoop hadoop2.7.2安装依赖文件,用于在window下调试hadoop
8. **启动Hadoop服务**:最后,通过start-dfs.cmd和start-yarn.cmd脚本启动Hadoop的DataNodes、NameNodes以及ResourceManager等服务。 以上就是在Windows 7环境中安装和配置Hadoop 2.7.2所需的关键步骤,其中hadoop...
在这个名为“hadoop2.7.2安装依赖文件.zip”的压缩包中,包含了一系列在Windows环境下安装和运行Hadoop 2.7.2版本所必需的组件。下面我们将详细探讨这些文件及其在Hadoop生态系统中的作用。 首先,`hadoop.dll`是一...
本文将详细介绍这两个组件以及如何在Windows系统下配置Hadoop 2.7.2版本的开发环境。 首先,`hadoop.dll`是Hadoop在Windows平台上的一个动态链接库文件,它包含了Hadoop运行所需的特定功能。由于Hadoop主要设计为在...