(12)ResourceManager高可用性

来源:互联网 发布:java 分布式框架 编辑:程序博客网 时间:2024/05/21 06:47
  • 介绍
  • 建筑
    • RM故障转移
    • 恢复以前的活跃RM的状态
  • 部署
    • 配置
    • 管理命令
    • ResourceManager Web UI服务
    • 网页服务

介绍

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

建筑

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-addressZK-quorum的地址。用于状态存储和嵌入式领导选举。yarn.resourcemanager.ha.enabled启用RM HA。yarn.resourcemanager.ha.rm-idRM的逻辑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-idyarn.resourcemanager.scheduler.address。rm-id对于每个rm-id,为ApplicationMasters指定scheduler host:port以获取资源。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-idyarn.resourcemanager.resource-tracker.address。rm-id对于每个rm-id,请为NodeManagers指定host:port以进行连接。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-idyarn.resourcemanager.admin.address。rm-id对于每个rm-id,请为管理命令指定host:port。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-idyarn.resourcemanager.webapp.address。rm-id对于每个rm-id,指定RM Web应用程序对应的主机:端口。如果将yarn.http.policy设置为HTTPS_ONLY,则不需要此参数。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-idyarn.resourcemanager.webapp.https.address。rm-id对于每个rm-id,指定RM https Web应用程序对应的host:port。如果将yarn.http.policy设置为HTTP_ONLY,则不需要此参数。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名rm-idyarn.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-attemptsFailoverProxyProvider应尝试故障转移的最大次数。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

0 0
原创粉丝点击