(12)ResourceManager高可用性

Posted GE12

tags:

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

介绍

本指南概述了YARN的ResourceManager的高可用性,以及如何配置和使用此功能的详细信息。ResourceManager(RM)负责跟踪集群中的资源,并调度应用程序(例如MapReduce作业)。在Hadoop 2.4之前,ResourceManager是YARN集群中的单点故障。高可用性功能以活动/备用ResourceManager对的形式添加冗余,以消除这种单点故障。

建筑

RM故障转移

ResourceManager HA通过主动/备用架构实现 - 在任何时间点,其中一个RM是活动的,并且一个或多个RM处于待机模式,等待接管,如果活动发生任何事情。转换到活动的触发器来自管理员(通过CLI)或通过集成的故障转移控制器(当启用自动故障转移时)。

手动转换和故障转移

当未启用自动故障转移时,管理员必须手动将其中一个RM转换为活动。要从一个RM故障切换到另一个RM,需要首先将Active-RM转换为Standby并将Standby-RM转换为Active。所有这一切都可以使用“ yarn rmadmin ”CLI 来完成。

自动故障转移

RM可以选择嵌入基于Zookeeper的ActiveStandbyElector来决定哪个RM应该是活动的。当活动下降或变得无响应时,另一RM被自动选择为活动,然后接管。注意,不需要像HDFS那样运行单独的ZKFC守护程序,因为嵌入在RM中的ActiveStandbyElector用作故障检测器和领导选举人,而不是单独的ZKFC定义。

客户端,ApplicationMaster和NodeManager在RM故障转移

当有多个RM时,客户端和节点使用的配置(yarn-site.xml)应该列出所有的RM。客户端,ApplicationMasters(AM)和NodeManager(NM)尝试以循环方式连接到RM,直到它们达到Active RM。如果活动下降,他们恢复轮询轮询,直到他们击中“新”活动。此默认重试逻辑实现为org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider。您可以通过实现org.apache.hadoop.yarn.client.RMFailoverProxyProvider并将yarn.client.failover-proxy-provider的值设置为类名来覆盖逻辑。

恢复以前的活跃RM的状态

在启用ResourceManger重新启动后,升级到活动状态的RM将加载RM内部状态,并根据RM重新启动功能,尽可能继续从上次活动停止的位置开始操作。为先前提交给RM的每个托管应用程序生成新尝试。应用程序可以定期检查点,以避免丢失任何工作。状态存储必须从Active / Standby RM两个可见。目前,有两个用于持久化的RMStateStore实现 - FileSystemRMStateStore和ZKRMStateStore。该ZKRMStateStore隐式地允许写在任何时间点访问单个RM,因此是推荐的商店HA群集使用。当使用ZKRMStateStore时,不需要单独的屏蔽机制来解决潜在的裂脑情况,其中多个RM可以潜在地承担活动角色。当使用ZKRMStateStore时,建议不要在Zookeeper集群上设置“ zookeeper.DigestAuthenticationProvider.superDigest ”属性,以确保zookeeper管理员无权访问YARN应用程序/用户凭据信息。

部署

配置

大多数故障转移功能可使用各种配置属性进行调整。以下是必需/重要的列表。yarn-default.xml带有完整的旋钮列表。有关包括缺省值的更多信息,请参阅yarn-default.xml。有关设置状态存储的说明,请参阅ResourceManger重新启动的文档。

配置属性 描述
yarn.resourcemanager.zk-address ZK-quorum的地址。用于状态存储和嵌入式领导选举。
yarn.resourcemanager.ha.enabled 启用RM HA。
yarn.resourcemanager.ha.rm-id RM的逻辑ID列表。例如“rm1,rm2”。
yarn.resourcemanager.hostname。rm-id 对于每个rm-id,指定RM对应的主机名。或者,可以设置RM的每个服务地址。
yarn.resourcemanager.address。rm-id 对于每个rm-id,请为客户端指定host:port以提交作业。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.scheduler.address。rm-id 对于每个rm-id,为ApplicationMasters指定scheduler host:port以获取资源。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.resource-tracker.address。rm-id 对于每个rm-id,请为NodeManagers指定host:port以进行连接。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.admin.address。rm-id 对于每个rm-id,请为管理命令指定host:port。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.webapp.address。rm-id 对于每个rm-id,指定RM Web应用程序对应的主机:端口。如果将yarn.http.policy设置为HTTPS_ONLY,则不需要此参数。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.webapp.https.address。rm-id 对于每个rm-id,指定RM https Web应用程序对应的host:port。如果将yarn.http.policy设置为HTTP_ONLY,则不需要此参数。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-id
yarn.resourcemanager.ha.id 标识合奏中的RM。这是可选的; 然而,如果设置,管理员必须确保所有RM在配置中有自己的ID。
yarn.resourcemanager.ha.automatic-failover.enabled 启用自动故障转移; 默认情况下,仅在启用HA时启用。
yarn.resourcemanager.ha.automatic-failover.embedded 在启用自动故障切换时,使用嵌入式领导选民来选择主动RM。默认情况下,仅在启用HA时启用。
yarn.resourcemanager.cluster-id 标识集群。由选民使用,以确保RM不会接管作为另一个群集的活动。
yarn.client.failover-proxy-provider 客户端,AM和NM用于故障转移到Active 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 每次尝试在套接字超时时连接到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.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 / Standby。HA的命令采用由yarn.resourcemanager.ha.rm-ids作为参数设置的RM的服务标识。

 $ yarn rmadmin -getServiceState rm1
 活性

 $ yarn rmadmin -getServiceState rm2
 支持

如果启用了自动故障转移,则不能使用手动转换命令。虽然你可以通过-forcemanual标志覆盖它,你需要谨慎。

 $ yarn rmadmin -transitionToStandby rm1
 对org.apache.hadoop.yarn.client.RMHAServiceTarget@1d8299fd启用自动故障转移
 拒绝手动管理HA状态,因为它可能导致
 裂脑情景或其他不正确的状态。
 如果你很确定你知道你在做什么,请
 指定forcemanual标志。

有关更多详细信息,请参阅YarnCommands

ResourceManager Web UI服务

假设备用RM已启动并正在运行,则备用将自动将所有Web请求重定向到活动,除了“关于”页面。

网页服务

假定备用RM已启动并正在运行,则在备用RM上调用时,ResourceManager REST API描述的 RM Web服务会自动重定向到Active RM。


原文:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

以上是关于(12)ResourceManager高可用性的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop-2.4.1学习之高可用ResourceManager

搭建Hadoop的HA高可用架构(超详细步骤+已验证)

Hadoop高可用集群

YarnYarn HA 高可用集群

YarnYarn HA 高可用集群

大数据必知必会:Hadoop高可用集群安装