TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • 产品中心

  • 安装与使用

    • Ambari Plus 安装

    • 组件安装

    • 开启高可用

      • 开启高可用总览
      • Ambari Server 开启 HA
      • Ambari Server 成员维护、统一入口与故障接替
      • HDFS 开启 HA
      • YARN 开启 HA
        • YARN 开启 HA
        • 操作前看一眼
        • 进入 YARN 运维向导
        • 填写 HA 参数
        • 预览执行计划
        • 开始执行
        • 回到页面确认结果
        • 常见卡点
      • Ranger 开启 HA
      • Knox 开启 HA
      • 高可用巡检、重启与故障演练
    • 权限与安全专题

    • Ambari Plus Monitor

    • 常见问题

  • 发布与支持

  • 会员与访问

目录
YARN 开启 HA
操作前看一眼
进入 YARN 运维向导
填写 HA 参数
预览执行计划
开始执行
回到页面确认结果
常见卡点

YARN 开启 HA3.0.1

# YARN 开启 HA

HDFS 切到 HA 以后,下一处常见单点就是 YARN 的 ResourceManager。单 ResourceManager 模式下,NodeManager 还在各节点上运行,但调度入口只有一个;一旦 ResourceManager 不可用,新任务提交、队列调度、应用状态查询都会受影响。

Ambari Plus 里开启 YARN HA 的路径比较短:进入 YARN 运维向导,填写 YARN HA Cluster ID,选择一台新的 Standby ResourceManager 主机,预览配置后由页面自动完成停止、安装、改配置和启动。本文按页面向导把这条链路走清楚。

启用完成后,高可用中心会显示两个 ResourceManager 和当前保护状态。下面是当前版本的结果页。

YARN 高可用当前状态

本次示例规划如下:

项目 本次选择
YARN HA Cluster ID yarn-cluster
当前 ResourceManager hadoop1.test.com
新增 Standby ResourceManager hadoop3.test.com
ZooKeeper 从集群中自动获取 3 个 ZooKeeper Server
ResourceManager ID rm1、rm2

注意

点击 开始执行 后,向导会停止 YARN、安装新增 ResourceManager、写入 yarn-site 和 core-site 配置,再启动 ZooKeeper 与 YARN。建议放在维护窗口操作,避免正在提交或运行的任务受到影响。

# 操作前看一眼

先进入 服务与组件,确认 YARN 服务处于运行中。如果 YARN 还是单 ResourceManager,服务列表或 YARN 运维向导里会看到 单 ResourceManager、ResourceManager HA 未开启 这类提示。

我会在执行前先看这几项:

检查项 期望状态
YARN 服务 运行中
ResourceManager 当前只有 1 个,并且运行中
NodeManager 所有计算节点运行中
ZooKeeper 已安装并运行,YARN HA 会依赖它做状态存储和选举
配置待生效 尽量先处理掉明显的待重启、失败任务

如果页面已经显示 ResourceManager HA 已启用,就不需要再按首次开启流程操作,直接进入结果检查即可。

# 进入 YARN 运维向导

已经启用 HA 的环境可以先从高可用中心点击 管理,核对两台 ResourceManager、ZooKeeper 状态和当前保护结论;首次启用环境会显示“开启 HA”入口。

YARN 高可用管理页核对 ResourceManager 拓扑

进入 YARN 服务详情页,点击右上角 操作,选择 YARN 运维向导。

进入向导首页后,页面会先展示当前 YARN 的可靠性状态。这里能看到 ResourceManager HA 还没有开启,ResourceManager 数量为 1,推荐策略是优先做 HA。

YARN 已启用环境的运行与验收页

点击 进入 HA 向导,开始配置 ResourceManager HA。

# 填写 HA 参数

配置页主要填写两块:左侧是 YARN HA Cluster ID 和 ZooKeeper 信息,右侧是 ResourceManager 主机规划。

这里按规划填写:

参数 填写方式
YARN HA Cluster ID 保持 yarn-cluster,或按自己的命名规范填写一个稳定名称。
Current ResourceManager 页面自动识别当前 ResourceManager,通常不需要调整。
Additional ResourceManager 选择另一台主机作为 Standby ResourceManager,不能和当前 ResourceManager 相同。
ZooKeeper 节点 页面从集群自动获取,用于 ZKRMStateStore 和 Leader 选举。

提示

YARN HA Cluster ID 会写入 yarn.resourcemanager.cluster-id,并参与 ZooKeeper 选举路径。这个名字建议短一些、稳定一些,不要使用临时环境名。

如果集群启用了 Kerberos,页面顶部会提示 Kerberos: 执行前提交凭据。这不是配置错误,而是后面真正执行时需要 KDC 管理员凭据,为新增 ResourceManager 准备认证信息。

# 预览执行计划

参数填完后,点击 下一步 进入预览页。这里先看执行流程,再看角色主机和配置差异。

预览页会把自动化流程拆成 4 个阶段:

阶段 页面会做什么
Stop YARN 停止 ResourceManager 和 NodeManager,为角色安装与配置变更做准备。
Install ResourceManager 在新增主机上注册并安装 Additional ResourceManager。
Reconfigure YARN 写入 yarn-site 的 HA 配置,以及 core-site 的 ZooKeeper quorum。
Start Services 启动 ZooKeeper,再启动 YARN,进入 Active / Standby 模式。

配置变更里重点看这些值:

配置 期望值
yarn.resourcemanager.ha.enabled true
yarn.resourcemanager.ha.rm-ids rm1,rm2
yarn.resourcemanager.cluster-id 本次填写的 Cluster ID
yarn.resourcemanager.hostname.rm1 当前 ResourceManager 主机
yarn.resourcemanager.hostname.rm2 新增 Standby ResourceManager 主机
yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.resourcemanager.zk-address ZooKeeper quorum
ha.zookeeper.quorum ZooKeeper quorum

确认角色主机和配置差异都符合预期后,再点击 进入执行。

# 开始执行

进入执行页后,页面还不会马上改集群,这一步只是准备状态。真正会停止 YARN、安装 ResourceManager、改配置并启动服务的动作,是点击右侧的 开始执行。

我建议在这里最后确认三件事:

检查项 为什么要确认
维护窗口 执行过程会停止 YARN。
Kerberos 凭据 Kerberos 集群会在执行前要求提交 KDC 管理员凭据。
任务低峰 新任务提交和正在运行的应用可能会受到影响。

确认无误后点击 开始执行。如果弹出 KDC 管理员凭据,按集群实际的管理员 Principal 和密码提交即可;密码不要写进文章截图,也不要贴到公开日志里。

提交后,页面会从准备状态进入真正的自动执行流程。下面这张图能看到前三个阶段已经完成,正在执行 Start Services,也就是依次启动 ZooKeeper 和 YARN。

执行过程中不要刷新页面,也不要再去手动停止、启动同一个服务。页面右侧的请求编号和阶段进度能帮助判断当前卡在哪一步;如果失败,先点开对应阶段看 Ambari 任务详情,再决定是重试还是回滚。

当 4 个阶段全部完成,页面会显示 ResourceManager HA 已成功启用,进度条也会变成完成状态。

# 回到页面确认结果

执行完成后,回到 YARN 运维向导 或 服务与组件 看结果。正常情况下应该能看到:

位置 期望看到
YARN 运维向导首页 ResourceManager HA 显示已开启
ResourceManager 数量 2
服务列表中的 YARN 卡片 显示 HA 已启用,或双 ResourceManager 自动切换拓扑
YARN 服务状态 运行中
ResourceManager 实例 两个实例运行中
NodeManager 实例 原有 NodeManager 运行中
配置待生效 YARN 及相关客户端没有明显待刷新配置

这次执行后,我在 Ambari API 里复核到的关键结果如下。写教程时我更愿意把这类结果贴出来,因为它比“页面显示成功”更能说明 HA 是否真的落到了集群配置里。

检查项 结果
YARN 服务状态 STARTED
ResourceManager 实例 2 / 2,hadoop1.test.com 与 hadoop3.test.com 都是 STARTED
NodeManager 实例 3 / 3,保持 STARTED

本次 Chrome 页面复核显示:运行模式为 Active / Standby,ResourceManager 2/2 正常,ZooKeeper 选举链路已就绪,当前结论为“已就绪”。

配置侧重点看这些值:

yarn.resourcemanager.ha.enabled=true
yarn.resourcemanager.ha.rm-ids=rm1,rm2
yarn.resourcemanager.hostname.rm1=hadoop1.test.com
yarn.resourcemanager.hostname.rm2=hadoop3.test.com
yarn.resourcemanager.store.class=org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.resourcemanager.zk-address=3 个 ZooKeeper 节点组成的 quorum
1
2
3
4
5
6

这几项能说明 ResourceManager 已经从单点入口切到 rm1 / rm2 的主备拓扑,其中 ZKRMStateStore 表示 ResourceManager 状态交给 ZooKeeper 保存。

API 复核项
配置项 结果
yarn.resourcemanager.ha.enabled true
yarn.resourcemanager.ha.rm-ids rm1,rm2
yarn.resourcemanager.hostname.rm1 hadoop1.test.com
yarn.resourcemanager.hostname.rm2 hadoop3.test.com
yarn.resourcemanager.store.class ZKRMStateStore
yarn.resourcemanager.zk-address 3 个 ZooKeeper 节点组成的 quorum

完成后,如果 MapReduce2、Tez、Hive、Spark、Flink 这些依赖 YARN 的服务提示客户端配置待生效,按页面提示刷新客户端配置或重启对应服务。YARN HA 的核心目标,是让应用提交和调度入口从单点 ResourceManager 切换到 rm1 / rm2 的自动主备。

Kerberos 集群多看一眼

Kerberos 环境里,我还会额外看 core-site 里的 hadoop.proxyuser.yarn.hosts。YARN 的 Kerberos 描述通常会让这个值跟 ResourceManager 主机列表保持一致;也就是说,开启 HA 后它应该覆盖两个 ResourceManager 主机,或者按你的安全策略配置成等价范围。

如果这里还只保留旧 ResourceManager 主机,建议在 HDFS 的 core-site 配置里补齐两个 RM 主机,然后刷新客户端配置,并按实际影响范围重启或刷新相关服务。这个检查不影响你判断“HA 是否已经开启”,但会影响后续 failover 演练时的代理用户授权是否足够完整。

可选:命令复核

页面状态已经能完成主要判断。生产变更后如果还想从服务器侧复核一次,可以用 YARN 客户端查看配置和主备状态。

如果使用 Bigtop 常见的 Hadoop 配置路径,可以先看客户端侧的 yarn-site.xml 是否已经拿到 HA 配置:

grep -A1 -E 'yarn.resourcemanager.ha.enabled|yarn.resourcemanager.ha.rm-ids|yarn.resourcemanager.cluster-id' /etc/hadoop/conf/yarn-site.xml
1

期望能看到这些值:

true
rm1,rm2
yarn-cluster
1
2
3

Kerberos 集群先使用有权限的账号完成认证,再看两个 ResourceManager 的主备状态:

yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
1
2

正常情况是一个返回 active,另一个返回 standby。最后再看 NodeManager 和应用入口:

yarn node -list
yarn application -list
1
2

yarn node -list 应该能看到已注册的 NodeManager;yarn application -list 能正常返回应用列表,说明客户端也已经通过 HA 配置访问 YARN。

# 常见卡点

现象 处理思路
不能进入下一步 检查是否选择了 Additional ResourceManager,且不能和当前 ResourceManager 在同一台主机。
页面提示没有 ZooKeeper 节点 先安装并启动 ZooKeeper,YARN HA 需要 ZooKeeper 做状态存储和选举。
Kerberos 凭据提交失败 核对 KDC 管理员 Principal、Realm 和密码,确认 KDC 服务可用。
执行阶段停在 Stop YARN 点开阶段任务,看是否有 NodeManager 或 ResourceManager 停止失败。
新增 ResourceManager 安装失败 检查目标主机 Agent、仓库、组件包和主机健康状态。
执行完成后客户端仍访问旧地址 刷新 YARN Client 配置,并重启依赖 YARN 的服务客户端。

YARN HA 做完以后,资源调度入口就不再只依赖单个 ResourceManager。下一步如果继续补控制面的高可用,可以再规划 Ranger Admin HA,让权限入口和审计入口也具备更好的容灾能力。

#YARN#HA#Ambari Plus#高可用
HDFS 开启 HA
Ranger 开启 HA

← HDFS 开启 HA Ranger 开启 HA→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式