hadoop-2.7.4-翻译文档-resourcemanager高可用

来源:互联网 发布:域名和空间在哪里买 编辑:程序博客网 时间:2024/04/26 01:47

ResourceManager高可用性

介绍

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

结构

ResourceManager高可用性概述

RM故障转移

ResourceManager HA通过active/standby架构实现 - 在任何时间点,其中一个RM是活动的,一个或多个RM处于待机模式,等待接管活动。在启用自动故障切换时,转换为活动的触发器来自管理员(通过CLI)或集成故障切换控制器。

手动转换和故障切换

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

自动故障切换

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

客户端,ApplicationMaster和NodeManager在RM故障切换

当有多个RM时,客户端和节点使用的配置[yarn-site.xml]来获取所有的RM节点。客户端,应用程序主机(AM)和节点管理器(NM)尝试以循环方式连接到RM,直到它们连接到Active RM。如果active 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-IDSRM的逻辑ID列表。例如,“rm1,rm2”。yarn.resourcemanager.hostname.rm-ids对于每个rm-id,指定RM对应的主机名。或者,可以设置每个RM的服务地址。yarn.resourcemanager.address.rm-id对于每个rm-id,指定客户端提交作业的主机:端口。如果设置,则覆盖在yarn.resourcemanager.hostname.rm-id中设置的主机名。yarn.resourcemanager.scheduler.address.rm-id对于每个rm-id,为ApplicationMaster指定调度程序host:port以获取资源。如果设置,则覆盖在yarn.resourcemanager.hostname.rm-id中设置的主机名。yarn.resourcemanager.resource-tracker.address.rm-id对于每个rm-id,请指定NodeManager连接的host:端口。如果设置,则覆盖在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应用程序的host:port。如果将yarn.http.policy设置为HTTPS_ONLY则不需要此操作如果设置,则覆盖在yarn.resourcemanager.hostname.rm-id中设置的主机名。yarn.resourcemanager.webapp.https.address.rm-id对于每个rm-id,指定RM https Web应用程序对应的host:端口。如果将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不会接管另外一个群集的活动。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.failoverr-retries-on-socket-timeouts每次尝试使用套接字连接到RM时超时重试的次数。

示例配置

以下是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的运行状况和状态,或进行RM的状态转换。HA的命令将使用services.resourcemanager.ha.rm-ids设置的rm表示作为参数

 $ yarn rmadmin -getServiceState rm1 active $ yarn rmadmin -getServiceState rm2 standby

如果启用自动故障切换,则无法使用手动转换命令。虽然可以通过强制手动标记来操作,但您需要谨慎小心。

 $ 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.
//org.apache.hadoop.yarn.client.RMHAServiceTarget@1d8299fd的自动故障转移已启用。
//手动转换HA RM状态的结果,有可能导致脑裂或者其他故障。
//如果你非常确定你知道自己在做什么的话,请使用 forcemanual 参数。

有关详细信息,请参阅YarnCommands

ResourceManager Web UI服务

假设standby rm启动并正在运行,则其会自动将所有Web请求重定向到active rm,除了“about”页面。

网页服务

假设standby rm启动并正在运行,在standby rm上调用ResourceManager REST API时呈现的RM Web服务将自动重定向到Active RM。

原创粉丝点击