YARN ResourceManager HA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YARN ResourceManager HA相关的知识,希望对你有一定的参考价值。

参考技术A

翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_hag_rm_ha_config.html#xd_583c10bfdbd326ba--43d5fd93-1410993f8c2--7f77

YARN ResourceManager负责跟踪集群中的资源并调度应用程序(例如,MapReduce作业)。在CDH 5之前,ResourceManager是YARN群集中的单点故障。ResourceManager高可用性(HA)以主备ResourceManager对的形式添加冗余来消除此单点故障。此外,从活动的ResourceManager故障切换到备用时,应用程序可以从保存的state store 恢复; 例如,如果在MapReduce作业中的映射任务完成后发生了ResourceManager的故障转移,则映射任务不会再次运行。这样可以处理以下事件,而不会对正在运行的应用程序产生任何显着的性能影响:

ResourceManager HA需要运行ZooKeeper和HDFS服务。

继续阅读:

ResourceManager HA通过ResourceManager 的主备对来实现。在启动时,每个ResourceManager都处于standy状态; 进程已启动,但状态为未加载。当其中一个资源管理器转换为活动状态时,ResourceManager从指定的state store 加载内部状态并启动所有内部服务。转换活动状态可以由管理员(通过CLI)或自动故障转移触发。以下小节提供了有关ResourceManager HA组件的更多详细信息。

如果启用恢复功能,重新启动ResourceManager允许恢复正在运行的应用程序。为此,ResourceManager将其内部状态(主要是应用程序相关的数据和令牌)存储到ResourceManagerStateStore; 当NodeManager连接时重新构建群集资源。可以替代的state store 是MemoryResourceManagerStateStore (基于内存的实现), FileSystemResourceManagerStateStore (基于文件系统的实现; HDFS可用于文件系统)和 ZKResourceManagerStateStore (基于ZooKeeper的实现)。

当运行两个资源管理器时,在两个资源管理器都假定它们处于活动状态时会出现裂脑情况。为了避免这种情况,只有一个ResourceManager应该能够执行主动操作,而另一个ResourceManager应该被“隔离”。基于ZooKeeper的状态存储ZKResourceManagerStateStore 只允许单个ResourceManager对存储状态进行更改,并隐式隔离其他ResourceManager。这是通过ResourceManager声明对根znode的独占创建 - 删除权限来完成的。root znode 上的ACL是基于ACLs配置自动创建的; 对于安全集群,Cloudera建议您为根主机设置ACL,以便两个ResourceManagers共享读写管理员访问权限,但具有独占的创建 - 删除访问权限。防护是隐含的,不需要显式配置(如HDFS和MRv1中的fencing需要显示配置)。 可以根据需要插入自定义的“Fencer”- 例如,使用不同的状态存储实现。

在HA设置中,应该配置两个ResourceManager以使用不同的端口(例如,不同主机上的端口)。为了促进这一点,YARN使用ResourceManager标识符的概念(rm-id)。每个ResourceManager都有一个唯一的rm-id,以及所有RPC配置(<rpc-address>; for example yarn.resourcemanager.address)可以通过配置 <rpc-address>.<rm-id>完成。即使在故障转移后,客户端,ApplicationMaster和NodeManagers也会使用这些RPC地址自动与活动的ResourceManager进行通信。为了实现这一点,他们循环遍历配置中的资源管理器列表。这是自动完成的,不需要任何配置(如在HDFS和MapReduce(MRv1)中那样)。

默认情况下,ResourceManager HA使用ZKFC(基于ZooKeeper的故障转移控制器)进行自动故障转移。在内部, StandbyElector 用于选择活动的ResourceManager。故障切换控制器作为ResourceManager的一部分运行(不像HDFS和MapReduce v1中的单独进程),并且在yarn-site.xml中 配置 适当的属性后不需要进一步设置。

如果您愿意,可以插入自定义故障转移控制器。

您可以使用 命令行工具 yarn rmadmin 将特定的ResourceManager转换为活动或备用状态,从一个ResourceManager故障切换到另一个,获取ResourceManager的HA状态以及监控ResourceManager的健康状况。

最低要求的角色: 群集管理员 (也由完全管理员提供)

您可以使用Cloudera Manager为CDH 5或更高版本配置ResourceManager高可用性(HA)。Cloudera Manager支持ResourceManager的自动故障转移。它不提供通过Cloudera Manager用户界面手动强制进行故障转移的机制。

重要提示:启用或禁用HA将导致先前的监控历史记录不可用。

注意: ResourceManager HA不会影响JobHistory服务器(JHS)。JHS不保持任何状态,所以如果主机出现故障,您可以简单地将其分配给新的主机。您也可以通过执行以下操作来启用流程自动重新启动:

要配置并启动ResourceManager HA,请按以下步骤操作。

停止运行所有主机上的MapReduce JobHistory服务,ResourceManager服务和NodeManager,如下所示:

配置故障转移: 注意:

如图所示,在yarn-site.xml中配置以下属性,无论您是配置手动还是自动故障转移。它们足以配置手动故障转移。您需要为自动故障转移配置其他属性。

配置自动故障转移:

在yarn-site.xml中配置以下其他属性以配置自动故障转移。

配置工作保持恢复:

或者,您可以为资源管理器和节点管理器配置工作保留恢复。请参阅 工作保留YARN组件的恢复 。

以下是一个示例yarn-site.xml,显示配置的这些属性,包括保留ResourceManager和NM的恢复工作:

在所有之前运行的主机上启动MapReduce JobHistory服务器,ResourceManager和NodeManager,如下所示:

您可以使用 yarn rmadmin 在命令行上管理您的ResourceManager HA。yarn rmadmin 具有以下与ResourceManager HA相关的选项:

其中serviceId 就是 rm-id.。

注意:尽管 -help 显示了 -failover 选项, 但是 yarn rmadmin 并不支持 。

YarnYarn HA 高可用集群


2023年初一,发个博客纪念一下

1.概述

背景

ResourceManager负责资源管理和应用的调度,是YARN的核心组件,集群的主角色。

在Hadoop 2. 4之前, ResourceManager是YARN群集中的SPOF ( Single Point of Failure ,单点故障)

为了解决RM的单点故障问题, YARN设计了一套Active/Standby模式的ResourceManager HA架构。


架构

Hadoop官方推荐方案 :基于Zookeeper集群实现YARN HA。

  • 实现HA集群的关键是:主备之间状态数据同步、主备之间顺利切换(故障转移机制)

  • 针对数据同步问题 ,可以通过zk来存储共享集群的状态数据。因为zk本质也是一个小文件存储系统。

  • 针对主备顺利切换,可以手动,也可以基于zk自动实现。

2. 故障转移机制

第一种:手动故障转移

管理员使用命令手动进行状态切换。

第二种:自动故障转移

以上是关于YARN ResourceManager HA的主要内容,如果未能解决你的问题,请参考以下文章

YARN ResourceManager HA

Yarn Active ResourceManager启动框架分析

Yarn Yarn ResourceManager 重启机制

yarn.resourcemanager.ha.id设置

深入YARN系列2:剖析ResourceManager的架构与组件使用

深入YARN系列2:剖析ResourceManager的架构与组件使用