Apache Ambari 3.1.0 发行说明
Apache Ambari 3.1.0 带来全新的监控架构、以 React 为主的管理界面,以及现代化的 Java、Python 和 RPM 基础。这是 3.0.0 之后的下一个功能版本,而不是 3.0.x 维护更新。对于现有集群,需要将监控迁移、运行时调整和 Server、Agent 升级纳入同一份升级计划。
本文描述 3.1.0 预览版,功能范围包含监控 PR #4182 及已审查源码基线中的社区变更。本页尚不宣布正式发行包、最终发布日期或已完成验证的升级兼容矩阵。
版本重点
以兼容 Prometheus 的采集体系重构监控
新监控系统替代 AMS。原有的 AMS Monitor、Collector 和基于 HBase 的存储链路,被 Agent 遥测端点、VMAGENT 采集和 VictoriaMetrics 时序存储取代。组件接入、指标采集、存储和可视化由不同模块负责,监控不再围绕单一 Collector 部署组织。
Ambari Server 将 Stack 遥测描述符和类型化 JMX 配置编译为按主机分配的采集任务;Agent 提供 Linux 主机指标和独立的组件端点;VMAGENT 从 Ambari 发现目标、抓取指标,再通过远程写入发送至 VictoriaMetrics。服务可以通过原生 Prometheus 端点或类型化 JMX 转换接入同一条采集链路,不必再实现 AMS 专用的指标输出器。
VictoriaMetrics 支持单存储进程部署,也支持写入、存储、查询分离的部署方式,并可选择 VMAUTH 作为网关。React 监控界面提供数据源管理、PromQL 查询、采集目标状态,以及仪表盘编辑、导入、导出和克隆。浏览器查询经过 Ambari 的授权边界,无需直接访问时序存储服务。
对运维人员而言,这意味着可以独立规划存储容量、直接检查采集目标,并用统一的查询模型分析主机和服务指标。现有指标名称、自定义查询和仪表盘需要逐项检查,不能通过修改一个 AMS 开关完成迁移。Agent 指标端点没有应用层身份验证,还必须配合网络访问控制部署。
实现来源:#4182。详见新旧架构对比、模块架构、部署指南和查询与仪表盘。
React 成为主要管理界面
Ambari Web 默认进入 React 应用。当前实现承接了集群安装、主机、服务、配置编辑、后台操作、告警、Kerberos、高可用、Stack 升级、Views 和管理工作流;Admin 应用也作为独立 React 模块打包。这不只是界面换肤,重构还覆盖路由、权限、异步请求、进度反馈和工作流恢复。
监控界面采用新的数据源和仪表盘模型,不以兼容旧 AMS/Ganglia 小组件及独立 Heatmaps 页面为目标。3.1.0 文档不再把 Ember 或 AMS 教程作为当前版本操作指南。实际发布候选版本仍需验证不同角色、认证方式、自定义 Stack 和异常恢复路径。
默认入口和打包变更:#4198。工作流覆盖范围及验收边界见 React 用户指南。
Java 基线升级,Ambari 与 Stack 独立选择 JDK
源码构建要求 JDK 17 和 Maven 3.9.x,由 Maven 强制检查。共享依赖管理更新了 Spring/Spring Security、Jetty、Jersey、Guice、日志、持久化和 Jakarta API 等基础组件。自定义 Java 扩展及其传递依赖也需要核对兼容性,不能只替换 JDK 就认为迁移完成。
Ambari 与受管 Stack 可以使用不同的 JDK 安装目录。安装配置支持 --ambari-java-home 和 --stack-java-home,旧 --java-home 参数保留为已弃用的别名。Ambari 辅助程序要求 JDK 17 或更高版本,Stack 中的服务则应使用各自支持的 JDK。构建阶段限定 Java 17,与运行时版本检查是不同的约束。
实现来源:#4188、#4189。具体依赖版本及尚未完成的大版本迁移见 Java 依赖。
Python 依赖改用官方发行包
Ambari 不再将代码仓库内长期维护的古老第三方 Python 源码副本作为运行时依赖。原有 APScheduler、Jinja2、STOMP/WebSocket 和加密库副本由锁定版本的上游发行包替代;simplejson、mock 和独立 pbkdf2 实现改用标准库 API。Ambari 自身的 Agent 和 Server Python 代码仍由项目维护,并非删除全部 Python 源码。
源码最低要求为 Python 3.9.2。默认软件包面向 CPython 3.9 及其原生扩展 ABI,更高的 Python 次版本不代表可以直接运行这些软件包。依赖在构建阶段装入 Ambari 私有库目录,集群节点启动时不再从 Python 包索引安装依赖。
实现来源:#4198。解释器选择、依赖版本和 ABI 要求见 Python 运行时。
RPM 打包明确 ABI、架构与依赖来源
Python 依赖打包采用哈希锁定的构件,明确选择平台和 ABI,检查元数据及许可证,并生成软件物料清单(SBOM)。构建前清理依赖暂存目录,避免将旧库残留带入新 RPM。CPython 3.10 和 ARM64 使用独立构建目标;存在构建配置不代表所有操作系统与架构组合均已通过生产验证。
监控部分为 VictoriaMetrics 提供独立的软件包。保留的 ambari-metrics 模块名称不表示旧 AMS 仍是监控后端,Ambari RPM 版本与 VictoriaMetrics 组件版本也相互独立。离线 Python Wheel 仓库仅包含 Python 制品;如需完全离线构建,还必须分别准备 Maven、npm 和监控组件下载所需的缓存或镜像。
构建命令与产物检查见 RPM 打包,完整构建环境见从源码构建。
社区改进
集群操作与配置
- 集群启动:防止自动恢复阻塞集群范围的启动操作。#4187。
- 安装与服务操作:修复集群安装向导及主机、服务工作流中的多项问题。#4201。
- Capacity Scheduler:采用组合配置编辑格式,并在成功修改后提示刷新 YARN 队列。#4204。
- 配置传播:改善大集群中配置和配置组变更的传播。#4135。
主机与服务工作流
- 主机导航:跨页面导航和刷新保留主机选择,修正空列表分页,并修复从主机列表进入主机概览时组件未加载的问题。离开主机模块时会重置该模块的筛选条件。#4202、#4203。
- 界面状态与请求:减少冗余轮询、过期服务状态和卡住的连接测试请求。#4177、#4178。
- HDFS 与 YARN:React 新增 Observer NameNode 支持,并在 DataNode 或 NodeManager 安装后刷新机架映射。#4181、#4139。
- Stack 集成:新增 HBase Thrift 组件支持,更新 BIGTOP 3.4.0 服务版本和按目标架构构建的逻辑,并在 Ranger 与 Ambari 共用主机时保留 Ranger JDBC 驱动。#4122、#4078、#4040、#4043。
认证与敏感数据处理
- LDAP 与 Kerberos:修复 Python 3 和较新 Java 运行时中的 LDAPS 兼容性问题,并清理 Kerberos 文件描述符。#4151、#4124。
- 配置与命令产物:修复 Stack-root 配置密码暴露问题,并移除已执行命令的 JSON 文件。#4086、#4045。
- Hive 启动:移除 HiveServer2 启动过程中不安全的 metatool 调用。#4127。
升级影响
| 领域 | 必要操作 |
|---|---|
| AMS 历史数据与自定义仪表盘 | 单独规划历史数据保留。元数据升级不会导入 AMS 样本或转换旧小组件布局,需要按新模型重建查询和仪表盘。 |
| 自定义服务指标 | 按需实现遥测描述符和类型化 JMX 配置。保留的直接 JMX 管理属性不能代替时序指标接入契约。 |
| Java 与扩展 | 独立选择 Ambari 和 Stack JDK,并验证自定义扩展与新依赖基线的兼容性。 |
| Python 与 RPM | 解释器次版本 ABI 和目标架构必须与软件包一致,不要向新安装覆盖旧私有库。 |
| React 访问 | 针对新的默认入口验证代理路径、登录与 SSO、权限、Views 及浏览器已保存的界面偏好。 |
| 数据库与回退 | 执行结构升级前备份元数据和配置,仅降级软件包无法撤销数据库结构或监控模型的变化。 |
升级准备
- 在有代表性的环境中演练选定候选版本,包括操作失败和回退。
- 备份元数据数据库、配置、凭据及密钥库,并保留配套的软件包。
- 协调升级 Server、Agent 及其运行时配置,在维护窗口内执行受支持的元数据升级。
- 部署新监控组件,确认目标发现和数据写入正常,再验证仪表盘查询和访问权限。
- 恢复常规操作前,检查服务操作、配置保存、主机注册,以及集群使用的高可用和 Kerberos 工作流。
详细步骤和兼容性边界见升级指南与 AMS 迁移指南。Ambari 发行版本、BIGTOP Stack 版本和 VictoriaMetrics 版本彼此独立,升级 Ambari 不意味着为所有服务自动选择新的 Stack 版本。
发行范围与验证状态
已审查的源码基线涵盖 3.0.0 源码标签之后可达的 181 个提交,以及纳入目标版本的 PR #4182 监控基线。以上内容按用户可感知的变化归类,不把每个合并、依赖更新或测试修改单列为新功能。具体修订及源码依据见源码基线。
网站构建和浏览器测试只验证这些文档,不验证集群升级兼容性。正式发布前还需记录最终源码标签、签名构件、支持的软件包目标与升级路径,以及候选版本验收结果。在这些工作完成前,本文仍是预览文档,不代表发行验收已经完成。