许吉友 - 运维

ResourceManager 重启

官方文档:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerRestart.html

ResourceManager是管理资源并计划在YARN上运行的应用程序的中央机构。因此,它可能是Apache YARN群集中的单点故障。本文档概述了ResourceManager重新启动,此功能可以增强ResourceManager使其在重新启动后仍能正常运行,并且还使ResourceManager的停机时间对最终用户不可见。

ResourceManager有两种重新启动类型:

特征:

配置

启用RM重新启动:

    <property>
      <name>yarn.resourcemanager.recovery.enabled</name>
      <value>true</value>
    </property>

配置状态存储以保留RM状态:

    <property>
      <name>yarn.resourcemanager.store.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore基于ZooKeeper的状态存储实现

org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore基于Hadoop FileSystem的状态存储实现,例如HDFS和本地FS。

org.apache.hadoop.yarn.server.resourcemanager.recovery.LeveldbRMStateStore, 基于LevelDB的状态存储实现。

org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore.

配置基于ZooKeeper的状态存储实现

Hadoop 3.1 与 Hadoop 3.3 的配置有些不一样!!!

    <property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>ct1.test.bbdops.com:2181,ct2.test.bbdops.com:2181,ct3.test.bbdops.com:2181</value>
    </property>

    <property>
      <name>yarn.resourcemanager.zk-state-store.parent-path</name>
      <value>/rmstore</value>
    </property>

配置重试策略状态存储客户端用于连接ZooKeeper服务器。

    <property>
      <name>yarn.resourcemanager.zk-num-retries</name>
      <value>1000</value>
    </property>

    <property>
      <name>yarn.resourcemanager.zk-retry-interval-ms</name>
      <value>1000</value>
    </property>

    <property>
      <name>yarn.resourcemanager.zk-timeout-ms</name>
      <value>10000</value>
    </property>

ACL 配置:

    <property>
      <name>yarn.resourcemanager.zk-acl</name>
      <value>sasl:rm:rwcda</value>
    </property>

如果RM在启用了保留工作的恢复的情况下重新启动,则更改ContainerId字符串格式。以前是这样的格式:Container_ {clusterTimestamp} _ {appId} _ {attemptId} _ {containerId},例如容器_1410901177871_0001_01_000005。

现在已更改为:Container_e {epoch} _ {clusterTimestamp} _ {appId} _ {attemptId} _ {containerId},例如Container_e17_1410901177871_0001_01_000005。

在此,附加时期号是单调递增的整数,其从0开始,并且每次RM重新启动时都增加1。如果时期号为0,则将其省略,并且containerId字符串格式与以前相同。