YARN HA

翻译: http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html
版本: 2.9.0

ResourceManager高可用性

  • 介绍
  • 结构
    • RM故障转移
    • 恢复先前的主动-RM状态
  • 部署
    • 配置
    • 管理员命令
    • ResourceManager Web UI服务
    • web services

介绍

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

结构

YARN HA_第1张图片
ResourceManager高可用性概述

RM故障转移

ResourceManager HA通过主动/备用架构实现 - 在任何时间点,只有一个RM处于活动状态,并且一个或多个RM处于备用模式,等待接管活动状态。在启用自动故障切换时,支持从管理命令(通过CLI)或通过集成故障切换控制器进行触发。

手动转换和故障转移

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

自动故障转移

RM基于Zookeeper的ActiveStandbyElector来决定哪个RM应该处于活动状态。当活动RM关闭或无响应时,另一个RM被自动选为活动,然后接管。请注意,不需要像HDFS那样运行单独的ZKFC守护程序,因为嵌入在RM中的ActiveStandbyElector充当故障检测器和领导选举器,而不是使用单独的ZKFC deamon。

Client,ApplicationMaster和NodeManager上的RM故障转移

当有多个RM时,客户端和节点使用的配置(yarn-site.xml)文件列出所有RM。客户端、ApplicationMasters(AM)和NodeManagers(NM)尝试以循环方式连接到RM,直到它们碰到Active RM。如果活动关闭,他们重新轮询,直到他们获得“新”活动RM。这个默认的重试逻辑被实现为 org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider 。您可以通过实现 org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider并将yarn.client.failover-proxy-provider 的值设置为类名称来覆盖逻辑。

恢复先前的活动-RM状态

在启用ResourceManger重启 的情况下,被升级为活动状态的RM将加载RM内部状态,并根据RM restart feature ,尽可能多地操作前一个活动RM遗留下来的工作,对于每个托管应用程序先前提交给RM的作业都会产生新的尝试去接管相应工作。应用程序可以定期检查以避免丢失任何工作。该状态存储位置必须在活动/备用RM中都可见。目前,有两个用于持久性的RMStateStore实现 - FileSystemRMStateStore和ZKRMStateStore。该ZKRMStateStore隐式在任何时间点只允许对单个RM进行写入访问,因此建议在HA群集中使用该存储。使用ZKRMStateStore时,不需要单独的屏蔽机制来解决多个RM可能承担Active角色的而导致的潜在裂脑情况。使用ZKRMStateStore时,建议不要在Zookeeper集群上设置“ zookeeper.DigestAuthenticationProvider.superDigest ”属性,以避免动物园管理员管理员无权访问YARN应用程序/用户凭证信息。

部署

配置

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

配置属性 描述
yarn.resourcemanager.zk-address ZK法定地址。用于状态存储和嵌入式领导者选举。
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.address.rm-id 对于每个rm-id,指定host:port以供客户端提交作业。如果设置,则覆盖yarn.resourcemanager.hostname.rm-id 。
yarn.resourcemanager.scheduler.address.rm-id 对于每个rm-id,为ApplicationMaster指定调度程序主机:端口以获取资源。如果设置,则覆盖yarn.resourcemanager.hostname.rm-id。
yarn.resourcemanager.resource-tracker.address.rm-id 对于每个rm-id,指定host:port用于连接NodeManagers。如果设置,则覆盖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应用程序对应的主机:端口。如果将 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 启用自动故障转移功能时,使用嵌入的leader-elector选择Active RM。默认情况下,只有启用HA时才启用。
yarn.resourcemanager.cluster-id 标识群集。选民使用它来确保RM不会成为另一个群集的Active。
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故障转移的最小设置示例。


  yarn.resourcemanager.ha.enabled
  true


  yarn.resourcemanager.cluster-id
  cluster1


  yarn.resourcemanager.ha.rm-ids
  rm1,rm2


  yarn.resourcemanager.hostname.rm1
  master1


  yarn.resourcemanager.hostname.rm2
  master2


  yarn.resourcemanager.webapp.address.rm1
  master1:8088


  yarn.resourcemanager.webapp.address.rm2
  master2:8088


  yarn.resourcemanager.zk-address
  zk1:2181,zk2:2181,zk3:2181

管理员命令

yarn rmadmin 有几个特定于HA的命令选项来检查RM的健康/状态,并转换主动/备用状态。HA的命令将 yarn.resourcemanager.ha.rm-id 设置的RM的服务标识作为参数。

 $ 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.

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

ResourceManager Web UI服务

假设备用RM已启动并正在运行,备用系统会自动将所有网络请求重定向到活动状态,“关于”页面除外。

web services

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

你可能感兴趣的:(YARN HA)