TT Bigdata TT Bigdata
首页
  • 产品中心

    • 当前版本
    • 版本矩阵与下载
    • 免费开源大数据平台怎么选
  • 安装与使用

    • Ambari Plus 安装
      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
      • 安装部署
        • 初始化集群
    • 组件安装
      • 组件安装总览
      • Solr 安装
      • Ranger 安装
      • Knox 安装
      • HDFS 安装
      • YARN 安装
      • MapReduce2 安装
      • Tez 安装
      • Hive 安装
      • Sqoop 安装
      • HBase 安装
      • Kafka 安装
      • Flink 安装
      • Spark 安装
      • Hue 安装
      • Livy 安装
      • Zeppelin 安装
      • DolphinScheduler 安装
      • Doris 安装
      • Celeborn 安装
      • Ozone 安装
      • Impala 安装
      • Trino 安装
      • Paimon 安装
      • Hudi 安装
      • Atlas 安装
      • Superset 安装
      • Alluxio 安装
    • 开启高可用
      • 开启高可用总览
      • Ambari Server 开启 HA
      • Ambari Server 成员维护、统一入口与故障接替
      • HDFS 开启 HA
      • YARN 开启 HA
      • Ranger 开启 HA
      • Knox 开启 HA
      • 高可用巡检、重启与故障演练
    • 权限与安全专题
      • 权限与安全总览
      • Kerberos
        • Kerberos 专题
        • 【托管】MIT KDC 单节点接入与验证
        • 【托管】MIT KDC 高可用部署与验证
        • 【外置】MIT KDC 接入与验证
        • 【共用】Principal、Keytab 与账号审计
        • 【共用】LDAP 用户与 Kerberos 身份同步
        • 【共用】外部应用 Kerberos 接入与组件验证
        • 【运维】KDC 备份、密钥轮换与故障恢复
        • Kerberos 停用与回退
        • 附录:托管 MIT KDC 环境准备
        • 附录:原生安装 MIT KDC 实验环境
      • LDAP
        • LDAP 专题
        • 【托管】OpenLDAP 接入与验证
        • 【托管】用户、用户组与授权验证
        • 【托管】OpenLDAP 高可用部署
        • 【外置】LDAP 接入与验证
        • 【外置】用户、用户组与授权验证
        • 【AD】Active Directory 接入与验证
        • 【AD】用户、用户组与授权验证
        • 附录:托管 OpenLDAP 环境准备
        • 附录:【外置】OpenLDAP 原生安装环境
        • 附录:Active Directory 实验环境
    • Ambari Plus Monitor
      • IoTDB 安装与部署
      • 必须 ambari plus monitor 数据库初始化文件
      • Monitor 安装
      • 监控与告警使用
    • 常见问题
      • 安装使用常见问题
  • 发布与支持

    • 更新日志
    • 服务说明
    • 优惠政策
    • 合作共建
    • 蓝图愿景
    • 历史版本
      • 更新日志 · v3.0.2
      • 更新日志 · v3.0.1
      • 更新日志 · v2.2.3
      • 更新日志 · v2.2.2
      • 更新日志 · v2.2.1
      • 更新日志 · v2.2.0
      • 更新日志 · v2.1.0
      • 更新日志 · v2.0.0
      • 更新日志 · v1.0.7
      • 更新日志 · v1.0.6
      • 更新日志 · v1.0.5
      • 更新日志 · v1.0.4
      • 更新日志 · v1.0.3
      • 更新日志 · v1.0.2
      • 更新日志 · v1.0.1
      • 更新日志 · v1.0.0
  • 会员与访问

    • 专属内容解锁
  • Ambari 安装

    • 常规安装
      • 适用于Ambari3.0.0-kylin V10-aarch64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK-Bisheng
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-kylin V10-x86_64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK17与JDK1.8
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-ubuntu22.04
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地apt源
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el7
        • Step0—源码包下载
        • Step3—安装JDK17(Ambari 3.0专用)
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el8
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari2.8.0-el7
        • Step1—基础环境准备
        • Step2—免密登陆认证
        • Step3—安装JDK
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web Ui 初始化安装
    • 一键部署
      • Ambari快速部署—3.0.0
        • 【Kylin V10 aarch64】强力卸载脚本
        • 【Kylin V10 aarch64】自动安装脚本
        • 【Kylin V10 x86_64】强力卸载脚本
        • 【Kylin V10 x86_64】自动安装脚本
        • 【Ubuntu22】强力卸载脚本
        • 【Ubuntu22】自动安装脚本
        • 【Rocky8.10】强力卸载脚本
        • 【Rocky8.10】自动安装脚本
        • 【Centos7.9】自动安装脚本
      • Ambari快速部署—2.8.0
        • 【Centos7.9】自动安装脚本
        • 【Centos7.9】强力卸载脚本
      • 数据库环境
        • PostgreSQL 快速安装脚本
      • JDK环境
        • 安装JDK1.8
        • 安装JDK 17
        • 安装JDK1.8-aarch64
        • 安装JDK 17-aarch64
      • MAVEN环境
        • 安装Maven3.8.4
        • 安装Maven3.9.9
      • GRADLE环境
        • 安装Gradle5.6.4
      • CONDA环境
        • 安装Miniconda2
        • 编译Ambari2.8.0——Miniconda3
      • R环境
        • 【Kylin V10 x86_64】安装R 4.4.2
        • 【Ubuntu22】安装R 4.4.2
        • 【Rocky8.10】安装R 4.4.2
        • 【CentOS7】安装R 4.4.2
  • 组件安装

    • 安装指导
    • 魔改分享
      • Phoenix-JDK17下编译的二进制包适用于Datagrip
        • Q: 高版本 DataGrip 无法使用 Phoenix 驱动
        • A: Phoenix - JDK17 制作&下载
    • 最小化安装(简单)
      • Zookeeper 安装
      • Hadoop 安装
      • Yarn安装
      • Hive 安装
      • Spark 安装
      • HBase 安装
      • Kafka 安装
      • Sqoop 安装
      • Flink 安装
      • DolphinScheduler 安装
      • Zeppelin 安装
      • Redis 安装
      • Doris安装
      • Celeborn安装
      • Ozone安装
      • Impala安装
      • Cloudbeaver 安装
      • Ambari Metrics安装
      • Solr安装
      • Ranger 安装
      • Trino安装
      • Paimon安装
      • Hudi安装
      • Atlas 安装
      • Superset 安装
      • Livy 安装
      • Alluxio 安装
      • Hue 安装
      • Knox 安装
    • 进阶安装技巧(需开启Kerberos)
      • Ambari Metrics 进阶安装技巧
      • Atlas 进阶安装技巧
    • 高可用安装(有难度)
      • Zookeeper
      • Hadoop-Namenode
      • Yarn-ResourceManager
      • Hive
      • Hbase
      • Kafka
      • DolphinScheduler
      • Redis
      • Doris
      • Celeborn
      • Ozone
      • Ranger
  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos
      • KDC服务初始化安装
        • KDC服务初始化安装(RHEL篇)
        • KDC服务初始化安装(Ubuntu篇)
      • 开启Kerberos认证
        • Ambari 中开启 Kerberos 认证流程详解
        • [不看会报错]-Atlas开启准备工作
        • [不看会报错]-Zeppelin开启准备工作
        • [不看会报错]-Impala开启准备工作
        • [不看会报错]-Trino开启准备工作
      • 关闭Kerberos认证
        • Ambari 中关闭 Kerberos 认证流程详解
    • FreeIPA 认证
      • FreeIPA服务端初始化
        • FreeIPA Server 安装指导
      • FreeIPA客户端初始化及Ambari开启IPA认证
        • [Step1]-FreeIPA Client 安装与入域实战
        • [Step2]-FreeIPA 初始化核心用户
        • [Step3]-Ambari 中开启 Kerberos 认证流程详解
        • [Step3-1]-krb5-conf template调整
      • 部分踩坑-问题发现
        • Ambari Server 启动失败:no valid keystore
        • FreeIPA Client 导致 Ambari 权限异常问题排查
      • 部分踩坑-完美解决
        • Ambari Server 启动失败:no valid keystore
      • 辅助测试
        • FreeIPA Client 调试安装速记
        • Ambari Server 证书调试安装速记
    • 其他优化技巧
      • Atlas-Ranger-StringUtils缺失
      • Atlas-Ranger-commons-compress缺失
    • 部分组件踩坑合集
      • Test Kerberos Client报错:Failed to kinit
      • KERBEROS SERVICE CHECK 报错
      • Ambari开启Kerberos认证加密类型错误
      • [开启Kerberos]-Solr启动失败处理
      • [开启Kerberos]-Kafka启动失败处理
      • [开启Kerberos]-Atlas启动-Hbase权限异常
      • [开启Kerberos]-Atlas启动-Solr权限异常
      • [开启Kerberos]-Atlas启动-Kafka权限异常
      • [开启Kerberos]-Hive服务检查异常处理
      • [开启Kerberos]-Trino启动-配置文件处理
      • [开启Kerberos]-Trino启动-缺失PEM证书处理
      • [开启Kerberos]-Trino启动-连接Hive失败
      • [关闭 Kerberos]-Kafka 注销异常
      • [关闭 Kerberos]-Hive 注销异常
      • Kerberos 客户端模板渲染异常处理(临时处理)
      • Kafka 启动兼容 Kerberos 源码级修改
      • Kerberos 客户端模板渲染异常处理(源码修改)
    • 实战技巧
      • Knox 接入 Trino web-ui 解决方案
      • [开启Kerberos]-Trino启动-配置模板
      • [Knox适配]-Trino-474-转发规则魔改
    • 其他技巧
      • Ambari Security 开启步骤
  • Ranger 旧版专题

    • 实战 Ranger
    • Ranger HA 旧发行版
      • 环境准备
        • [Step1] Haproxy 规划与环境安装
      • Kerberos准备
        • [Step2] 统一访问域名的 Kerberos 票据生成
        • [Step3] 调整 Kerberos Client 配置
      • 安装指导
        • [Step4] Ambari页面开启 Ranger Admin 高可用
        • [Step5] 对齐 Ranger HA 的凭证处理
    • Ranger HA ttr-release
      • [Step2] Ranger Admin HA 自动化安装
    • FreeIPA 与 LDAP
      • [Step1] Ambari 安装 Ranger 并配置 FreeIPA + LDAP
      • [Step2] 制作 Ranger Usersync 证书并应用组件
      • [Step3] 制作 Ranger Admin 证书并应用组件
      • [Step4]Ranger HDFS Repository 创建失败修复
      • [Step5]Ranger HBase Repository 创建失败修复
    • 踩坑汇总
      • 调用 Ranger API 返回 403 问题
      • Ranger Admin LDAP 认证报 Bad credentials 分析
    • 解决方案
      • Ranger Admin LDAP 认证报 Bad credentials 处理
      • Ranger HA 虚拟域名 Principal 缺失修复
      • Ranger Usersync 证书快速导入脚本(LDAPS)
      • Ranger Admin 证书快速导入脚本
      • Ranger HDFS Repository 快速处理
      • Ranger HBase / Yarn Repository 快速处理
  • 开发环境

    • Ambari-Env
      • 环境准备
      • 开始使用
    • 工具与镜像
      • Maven镜像加速
      • Gradle镜像加速
      • Node.js 多版本共存方案
      • Npm镜像加速
      • Bower镜像加速
      • R环境安装+一键安装脚本
      • PostgreSQL 快速安装
  • Ambari 编译

    • Ambari 源码编译
    • 前端开发
    • 后端开发
    • Ambari Web本地启动
  • Bigtop 编译

    • 官方组件编译
    • 扩展组件编译
    • 工具与镜像
      • Ivy配置私有镜像仓库
      • APT仓库增量更新
      • Temurin JDK 23快速安装
  • Ambari 深度专题

    • Ambari Server 原理
    • Ambari Metrics 解读
    • Ambari Plus 思考
  • Bigtop 方法论

    • Bigtop 深度专题
  • 自定义集成

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 各组件代码
    • 通用代码模板
  • 报错解决

    • Ambari 报错
      • Ambari Views
        • MDEP-187 从根因到修复
        • Loading node labels问题解决
      • Ambari
        • phantomjs下载失败问题
        • 编译问题:GCC 安装与配置
        • bower CERT_HAS_EXPIRED 错误问题
        • Ambari-admin包出现bower install错误
        • Cannot run program "rpmbuild"
        • Python: No such file or directory
        • Yarn解压报错EOFException排查与解决
        • Rpm-maven-plugin与shebang兼容性报错
        • Rpm-maven-plugin 最佳实践
        • Bower install拉取失败解决
        • 缺少 python3 报错解决
        • Python(>=2.6) but is not installed
        • SSL_ERROR_SYSCALL 的修复方法
      • Ambari-infra
        • org.apache.commons.io does not exist
        • maven-compiler-plugin:3.3:compile
        • java.security.InvalidAlgorithmParameterException
        • ambari-infra-solr-plugin依赖报错解决方案
      • Ambari-metrics
        • psutil 缺失与 archive_util 导入错误
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
    • Bigtop 报错
      • Hadoop
        • /usr/bin/env: python3: No such file or directory 问题
        • error [email protected]: The engine "node" is incompatible with this module 错误
        • CMake 3.1 or higher is required. You are running version 2.8.12.2 错误
        • fuse is needed by hadoop_3_2_0-3.3.4-1.el7.x86_64 错误
        • Cyrus SASL/GSASL 缺失解决
        • Protobuf PROTOC LIBRARY NOTFOUND
        • EVP CIPHER CTX block size 报错
        • TIRPC_INCLUDE_DIRS NOTFOUND解决
        • 缺失 redhat-rpm-config 报错
      • Spark
        • evaluate,httr2,knitr 包不存在解决办法
        • Pandoc 缺失导致 SparkR 构建失败
      • Trino
        • Trino requires Temurin or Oracle JDK for development
        • GLIBC 与 GLIBCXX 版本过低
      • Hudi
        • javax.annotation.Nullable 缺失
        • 缺失 everit-json-schema 依赖
      • Paimon
        • 缺失 Jindo 依赖
      • Livy
        • apache-incubator-disclaimer-resource-bundle 缺失
      • Flink
        • .git can't be found during `prepare`
        • Angular CLI requires Node >=14.15
        • npm run ci-check 报错退出码 3
        • TypeScript 类型声明错误
      • Atlas
        • Atlas 集成 JanusGraph 启动时报 Solr6Index 实例化失败解决
      • Superset
        • urllib3 v2 only supports OpenSSL 1.1.1+
      • Jsvc
        • jsvc 依赖缺失导致 rpm 构建失败
      • Zookeeper
        • ZooKeeper 构建(缺少 hostname 命令)
        • cppunit-devel 依赖缺失解决方案
      • Hive
        • org.apache.logging.slf4j.Log4j.Marker is not public 解决方案
      • Sqoop
        • xmlto is needed by 解决方法
        • lsb_release、rsync 缺失导致构建中断
        • asciidoc 警告与 relnotes.py 语法不兼容分析
      • Cloudbeaver
        • SelectExpressionItem cannot be resolved 报错分析
      • Bigtop-select
        • bigtop-select 打包缺 compat 报错修复
        • bigtop-select 打包缺 control 文件报错修复
      • Knox
        • xmlsectool 依赖缺失问题解析
        • webhdfs-test 依赖收敛冲突问题处理
        • Invalid keystore format 问题处理
        • Knox is not allowed to impersonate admin
        • X-Forwarded-For 406 错误的原因与处理
      • Hue
        • Hue 访问 Hadoop 权限问题
        • Hue 访问 Yarn 权限问题
        • Hue 访问 Impala 时间格式问题
        • requests-kerberos 兼容性问题
        • libmariadb.so.3 缺失导致 syncdb 失败
        • 生产环境下解决方案——Hue/query_api.py
  • 系统适配

    • Kylin V10系列
      • 通用部分
        • not set for current OS
          • 解读-不支持操作系统解读
          • 解决-增加系统支持范围(一)
          • 解决-增加系统支持范围(二)
          • 解决-增加系统支持范围(三)
          • 解决-增加系统支持范围(四)
        • 解决-TLS1.3导致依赖下载失败终极办法
    • Rocky系列
      • 案例-Ambari重启失败
        • 解读-Ambari3.0.0重启失败问题
        • 解决-追加日志锚点
        • 解决-进一步分析与改造[一]
        • 解决-进一步分析与改造[二]
      • 案例-数据库连接问题
        • 解读-安装完毕后出现Unable to load version data from server
      • 案例-日志级别控制问题
        • 解读-Ambari3.0.0无法调整日志输出级别
        • 解决-临时处理日志级别不生效
        • 解决-源码级处理日志不生效
      • 案例-找不到snappy-devel
        • 解决-HDFS报snappy-devel包缺失现象
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Ubuntu系列
      • 案例-首次编译环境处理
        • 解决-dpkg-buildpackage依赖缺失
        • 解决-devscripts依赖缺失
        • 首次编译-环境初始化
      • 案例-Bigtop适配Debian
        • 解读-bigtop-select支持deb
        • 解决-Step1-解除限制拥抱deb
        • 解决-Step2-补全代码结构
      • 案例-安装中遇到的问题
        • 解读-APT私有镜像验证失败剖析
        • 解决-快速处理APT私有镜像验证失败问题
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Centos系列
    • OpenEuler系列
  • 监控与调优

    • Ambari-Metrics插件
    • Infinity插件
      • 准备工作
        • Ambari-Metrics插件失效原因
        • Infinity 插件选择与安装小技巧
        • Grafana9.3.2+Infinity2.3.1
          • Grafana快速安装Infinity插件
        • Grafana11.5.2+Infinity3.4.1
          • Grafana快速安装Infinity插件
      • 创建最简DEMO
        • Grafana9.3.2+Infinity2.3.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
        • Grafana11.5.2+Infinity3.4.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
    • 组件配置调优
      • HDFS
        • [0001]访问 HDFS Web UI Logs Unauthorized 失败
        • [0001]>>>>>>Hadoop管理员配置优化
      • RANGER
        • [0002]Ranger 审计日志时间与系统时间不一致调整
        • [0002]>>>>>日期统一规则调优
        • [0001]Resource lookup fail 线程池超时优化
        • [0001]>>>>>>线程池与超时参数调优
    • 组件调优指南
    • 1v1指导调优
  • BUG临时处理

    • 版本-v2.2.2-以前
      • [22213]Ambari 3.0.0 滚动重启只执行一台主机修复
      • [22213]解决办法
      • [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
      • [22212]解决办法
      • [22211]Atlas 缺失 __AtlasUserProfile
      • [22211]解决办法
      • [22210]Atlas Hook 无权限访问 Kafka Topic
      • [22210]解决办法
      • [22209]Ranger Kafka Lookup 缺少 JAAS 配置
      • [22209]解决办法
      • [22208]Atlas Hook 消费 Kafka 报错
      • [22208]解决办法
      • [22207]Hue 内访问 SparkSql 失败
      • [22207]解决办法
      • [22206]Ranger 调用 Knox Topologies 失败
      • [22206]解决办法
      • [22205]Ranger Admin 轮刷ZK 缺失 JAAS
      • [22205]解决办法
      • [22204]KNOX policymgr-ssl 启动告警
      • [22204]解决办法
      • [22203]Hue 服务启动后秒退
      • [22203]解决办法
      • [22202]Hue 启动失败: hadoop 用户不存在
      • [22202]解决办法
      • [22201]Hive 使用 Tez 引擎插入数据失败
      • [22201]解决办法
    • 版本-v2.1.0-以前
      • Sqlline 启动卡死问题处理
  • 实验室

    • VIEW插件
      • CAPACITY-SCHEDULER-VIEW
        • Ambari CAPACITY-SCHEDULER 插件安装详解
      • FILE-VIEW
        • Ambari FILE-VIEW 插件安装详解
    • JIRA速查
    • 虚拟环境思路
GitHub (opens new window)
JaneTTR

JaneTTR

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

    • 当前版本
    • 版本矩阵与下载
    • 免费开源大数据平台怎么选
  • 安装与使用

    • Ambari Plus 安装
      • 安装前准备
        • 实施总览
        • Step0—源码包下载与目录准备
        • Step1—系统源与基础工具准备
        • Step2—集群免密登录
        • Step3—主机名解析同步
        • Step4—Chrony 时间同步
        • Step5—Nginx 本地 Yum 文件服务
        • Step6—JDK 双环境准备
        • Step7—MySQL 驱动与本地仓库
        • Step8—MariaDB 初始化
        • Step9—AmbariServer 初始化
        • 必须 ambari plus 数据库初始化文件
      • 安装部署
        • 初始化集群
    • 组件安装
      • 组件安装总览
      • Solr 安装
      • Ranger 安装
      • Knox 安装
      • HDFS 安装
      • YARN 安装
      • MapReduce2 安装
      • Tez 安装
      • Hive 安装
      • Sqoop 安装
      • HBase 安装
      • Kafka 安装
      • Flink 安装
      • Spark 安装
      • Hue 安装
      • Livy 安装
      • Zeppelin 安装
      • DolphinScheduler 安装
      • Doris 安装
      • Celeborn 安装
      • Ozone 安装
      • Impala 安装
      • Trino 安装
      • Paimon 安装
      • Hudi 安装
      • Atlas 安装
      • Superset 安装
      • Alluxio 安装
    • 开启高可用
      • 开启高可用总览
      • Ambari Server 开启 HA
      • Ambari Server 成员维护、统一入口与故障接替
      • HDFS 开启 HA
      • YARN 开启 HA
      • Ranger 开启 HA
      • Knox 开启 HA
      • 高可用巡检、重启与故障演练
    • 权限与安全专题
      • 权限与安全总览
      • Kerberos
        • Kerberos 专题
        • 【托管】MIT KDC 单节点接入与验证
        • 【托管】MIT KDC 高可用部署与验证
        • 【外置】MIT KDC 接入与验证
        • 【共用】Principal、Keytab 与账号审计
        • 【共用】LDAP 用户与 Kerberos 身份同步
        • 【共用】外部应用 Kerberos 接入与组件验证
        • 【运维】KDC 备份、密钥轮换与故障恢复
        • Kerberos 停用与回退
        • 附录:托管 MIT KDC 环境准备
        • 附录:原生安装 MIT KDC 实验环境
      • LDAP
        • LDAP 专题
        • 【托管】OpenLDAP 接入与验证
        • 【托管】用户、用户组与授权验证
        • 【托管】OpenLDAP 高可用部署
        • 【外置】LDAP 接入与验证
        • 【外置】用户、用户组与授权验证
        • 【AD】Active Directory 接入与验证
        • 【AD】用户、用户组与授权验证
        • 附录:托管 OpenLDAP 环境准备
        • 附录:【外置】OpenLDAP 原生安装环境
        • 附录:Active Directory 实验环境
    • Ambari Plus Monitor
      • IoTDB 安装与部署
      • 必须 ambari plus monitor 数据库初始化文件
      • Monitor 安装
      • 监控与告警使用
    • 常见问题
      • 安装使用常见问题
  • 发布与支持

    • 更新日志
    • 服务说明
    • 优惠政策
    • 合作共建
    • 蓝图愿景
    • 历史版本
      • 更新日志 · v3.0.2
      • 更新日志 · v3.0.1
      • 更新日志 · v2.2.3
      • 更新日志 · v2.2.2
      • 更新日志 · v2.2.1
      • 更新日志 · v2.2.0
      • 更新日志 · v2.1.0
      • 更新日志 · v2.0.0
      • 更新日志 · v1.0.7
      • 更新日志 · v1.0.6
      • 更新日志 · v1.0.5
      • 更新日志 · v1.0.4
      • 更新日志 · v1.0.3
      • 更新日志 · v1.0.2
      • 更新日志 · v1.0.1
      • 更新日志 · v1.0.0
  • 会员与访问

    • 专属内容解锁
  • Ambari 安装

    • 常规安装
      • 适用于Ambari3.0.0-kylin V10-aarch64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK-Bisheng
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-kylin V10-x86_64
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step2—免密登录配置
        • Step3—安装JDK17与JDK1.8
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-ubuntu22.04
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地apt源
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el7
        • Step0—源码包下载
        • Step3—安装JDK17(Ambari 3.0专用)
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari3.0.0-el8
        • Step0—源码包下载
        • Step1—基础环境准备
        • Step3—安装JDK17与JDK1.8
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web UI 初始化安装
        • [快速安装]—脚本极速部署
      • 适用于Ambari2.8.0-el7
        • Step1—基础环境准备
        • Step2—免密登陆认证
        • Step3—安装JDK
        • Step4—时间同步(Chrony)
        • Step5—Nginx安装
        • Step6—本地yum源配置
        • Step7—Mariadb初始化
        • Step8—AmbariServer初始化
        • Step9—Ambari Web Ui 初始化安装
    • 一键部署
      • Ambari快速部署—3.0.0
        • 【Kylin V10 aarch64】强力卸载脚本
        • 【Kylin V10 aarch64】自动安装脚本
        • 【Kylin V10 x86_64】强力卸载脚本
        • 【Kylin V10 x86_64】自动安装脚本
        • 【Ubuntu22】强力卸载脚本
        • 【Ubuntu22】自动安装脚本
        • 【Rocky8.10】强力卸载脚本
        • 【Rocky8.10】自动安装脚本
        • 【Centos7.9】自动安装脚本
      • Ambari快速部署—2.8.0
        • 【Centos7.9】自动安装脚本
        • 【Centos7.9】强力卸载脚本
      • 数据库环境
        • PostgreSQL 快速安装脚本
      • JDK环境
        • 安装JDK1.8
        • 安装JDK 17
        • 安装JDK1.8-aarch64
        • 安装JDK 17-aarch64
      • MAVEN环境
        • 安装Maven3.8.4
        • 安装Maven3.9.9
      • GRADLE环境
        • 安装Gradle5.6.4
      • CONDA环境
        • 安装Miniconda2
        • 编译Ambari2.8.0——Miniconda3
      • R环境
        • 【Kylin V10 x86_64】安装R 4.4.2
        • 【Ubuntu22】安装R 4.4.2
        • 【Rocky8.10】安装R 4.4.2
        • 【CentOS7】安装R 4.4.2
  • 组件安装

    • 安装指导
    • 魔改分享
      • Phoenix-JDK17下编译的二进制包适用于Datagrip
        • Q: 高版本 DataGrip 无法使用 Phoenix 驱动
        • A: Phoenix - JDK17 制作&下载
    • 最小化安装(简单)
      • Zookeeper 安装
      • Hadoop 安装
      • Yarn安装
      • Hive 安装
      • Spark 安装
      • HBase 安装
      • Kafka 安装
      • Sqoop 安装
      • Flink 安装
      • DolphinScheduler 安装
      • Zeppelin 安装
      • Redis 安装
      • Doris安装
      • Celeborn安装
      • Ozone安装
      • Impala安装
      • Cloudbeaver 安装
      • Ambari Metrics安装
      • Solr安装
      • Ranger 安装
      • Trino安装
      • Paimon安装
      • Hudi安装
      • Atlas 安装
      • Superset 安装
      • Livy 安装
      • Alluxio 安装
      • Hue 安装
      • Knox 安装
    • 进阶安装技巧(需开启Kerberos)
      • Ambari Metrics 进阶安装技巧
      • Atlas 进阶安装技巧
    • 高可用安装(有难度)
      • Zookeeper
      • Hadoop-Namenode
      • Yarn-ResourceManager
      • Hive
      • Hbase
      • Kafka
      • DolphinScheduler
      • Redis
      • Doris
      • Celeborn
      • Ozone
      • Ranger
  • Kerberos 旧版专题

    • 实战 Kerberos
    • 自建 Kerberos
      • KDC服务初始化安装
        • KDC服务初始化安装(RHEL篇)
        • KDC服务初始化安装(Ubuntu篇)
      • 开启Kerberos认证
        • Ambari 中开启 Kerberos 认证流程详解
        • [不看会报错]-Atlas开启准备工作
        • [不看会报错]-Zeppelin开启准备工作
        • [不看会报错]-Impala开启准备工作
        • [不看会报错]-Trino开启准备工作
      • 关闭Kerberos认证
        • Ambari 中关闭 Kerberos 认证流程详解
    • FreeIPA 认证
      • FreeIPA服务端初始化
        • FreeIPA Server 安装指导
      • FreeIPA客户端初始化及Ambari开启IPA认证
        • [Step1]-FreeIPA Client 安装与入域实战
        • [Step2]-FreeIPA 初始化核心用户
        • [Step3]-Ambari 中开启 Kerberos 认证流程详解
        • [Step3-1]-krb5-conf template调整
      • 部分踩坑-问题发现
        • Ambari Server 启动失败:no valid keystore
        • FreeIPA Client 导致 Ambari 权限异常问题排查
      • 部分踩坑-完美解决
        • Ambari Server 启动失败:no valid keystore
      • 辅助测试
        • FreeIPA Client 调试安装速记
        • Ambari Server 证书调试安装速记
    • 其他优化技巧
      • Atlas-Ranger-StringUtils缺失
      • Atlas-Ranger-commons-compress缺失
    • 部分组件踩坑合集
      • Test Kerberos Client报错:Failed to kinit
      • KERBEROS SERVICE CHECK 报错
      • Ambari开启Kerberos认证加密类型错误
      • [开启Kerberos]-Solr启动失败处理
      • [开启Kerberos]-Kafka启动失败处理
      • [开启Kerberos]-Atlas启动-Hbase权限异常
      • [开启Kerberos]-Atlas启动-Solr权限异常
      • [开启Kerberos]-Atlas启动-Kafka权限异常
      • [开启Kerberos]-Hive服务检查异常处理
      • [开启Kerberos]-Trino启动-配置文件处理
      • [开启Kerberos]-Trino启动-缺失PEM证书处理
      • [开启Kerberos]-Trino启动-连接Hive失败
      • [关闭 Kerberos]-Kafka 注销异常
      • [关闭 Kerberos]-Hive 注销异常
      • Kerberos 客户端模板渲染异常处理(临时处理)
      • Kafka 启动兼容 Kerberos 源码级修改
      • Kerberos 客户端模板渲染异常处理(源码修改)
    • 实战技巧
      • Knox 接入 Trino web-ui 解决方案
      • [开启Kerberos]-Trino启动-配置模板
      • [Knox适配]-Trino-474-转发规则魔改
    • 其他技巧
      • Ambari Security 开启步骤
  • Ranger 旧版专题

    • 实战 Ranger
    • Ranger HA 旧发行版
      • 环境准备
        • [Step1] Haproxy 规划与环境安装
      • Kerberos准备
        • [Step2] 统一访问域名的 Kerberos 票据生成
        • [Step3] 调整 Kerberos Client 配置
      • 安装指导
        • [Step4] Ambari页面开启 Ranger Admin 高可用
        • [Step5] 对齐 Ranger HA 的凭证处理
    • Ranger HA ttr-release
      • [Step2] Ranger Admin HA 自动化安装
    • FreeIPA 与 LDAP
      • [Step1] Ambari 安装 Ranger 并配置 FreeIPA + LDAP
      • [Step2] 制作 Ranger Usersync 证书并应用组件
      • [Step3] 制作 Ranger Admin 证书并应用组件
      • [Step4]Ranger HDFS Repository 创建失败修复
      • [Step5]Ranger HBase Repository 创建失败修复
    • 踩坑汇总
      • 调用 Ranger API 返回 403 问题
      • Ranger Admin LDAP 认证报 Bad credentials 分析
    • 解决方案
      • Ranger Admin LDAP 认证报 Bad credentials 处理
      • Ranger HA 虚拟域名 Principal 缺失修复
      • Ranger Usersync 证书快速导入脚本(LDAPS)
      • Ranger Admin 证书快速导入脚本
      • Ranger HDFS Repository 快速处理
      • Ranger HBase / Yarn Repository 快速处理
  • 开发环境

    • Ambari-Env
      • 环境准备
      • 开始使用
    • 工具与镜像
      • Maven镜像加速
      • Gradle镜像加速
      • Node.js 多版本共存方案
      • Npm镜像加速
      • Bower镜像加速
      • R环境安装+一键安装脚本
      • PostgreSQL 快速安装
  • Ambari 编译

    • Ambari 源码编译
    • 前端开发
    • 后端开发
    • Ambari Web本地启动
  • Bigtop 编译

    • 官方组件编译
    • 扩展组件编译
    • 工具与镜像
      • Ivy配置私有镜像仓库
      • APT仓库增量更新
      • Temurin JDK 23快速安装
  • Ambari 深度专题

    • Ambari Server 原理
    • Ambari Metrics 解读
    • Ambari Plus 思考
  • Bigtop 方法论

    • Bigtop 深度专题
  • 自定义集成

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 各组件代码
    • 通用代码模板
  • 报错解决

    • Ambari 报错
      • Ambari Views
        • MDEP-187 从根因到修复
        • Loading node labels问题解决
      • Ambari
        • phantomjs下载失败问题
        • 编译问题:GCC 安装与配置
        • bower CERT_HAS_EXPIRED 错误问题
        • Ambari-admin包出现bower install错误
        • Cannot run program "rpmbuild"
        • Python: No such file or directory
        • Yarn解压报错EOFException排查与解决
        • Rpm-maven-plugin与shebang兼容性报错
        • Rpm-maven-plugin 最佳实践
        • Bower install拉取失败解决
        • 缺少 python3 报错解决
        • Python(>=2.6) but is not installed
        • SSL_ERROR_SYSCALL 的修复方法
      • Ambari-infra
        • org.apache.commons.io does not exist
        • maven-compiler-plugin:3.3:compile
        • java.security.InvalidAlgorithmParameterException
        • ambari-infra-solr-plugin依赖报错解决方案
      • Ambari-metrics
        • psutil 缺失与 archive_util 导入错误
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
        • Ambari-Metrics Monitor 启动失败
    • Bigtop 报错
      • Hadoop
        • /usr/bin/env: python3: No such file or directory 问题
        • error [email protected]: The engine "node" is incompatible with this module 错误
        • CMake 3.1 or higher is required. You are running version 2.8.12.2 错误
        • fuse is needed by hadoop_3_2_0-3.3.4-1.el7.x86_64 错误
        • Cyrus SASL/GSASL 缺失解决
        • Protobuf PROTOC LIBRARY NOTFOUND
        • EVP CIPHER CTX block size 报错
        • TIRPC_INCLUDE_DIRS NOTFOUND解决
        • 缺失 redhat-rpm-config 报错
      • Spark
        • evaluate,httr2,knitr 包不存在解决办法
        • Pandoc 缺失导致 SparkR 构建失败
      • Trino
        • Trino requires Temurin or Oracle JDK for development
        • GLIBC 与 GLIBCXX 版本过低
      • Hudi
        • javax.annotation.Nullable 缺失
        • 缺失 everit-json-schema 依赖
      • Paimon
        • 缺失 Jindo 依赖
      • Livy
        • apache-incubator-disclaimer-resource-bundle 缺失
      • Flink
        • .git can't be found during `prepare`
        • Angular CLI requires Node >=14.15
        • npm run ci-check 报错退出码 3
        • TypeScript 类型声明错误
      • Atlas
        • Atlas 集成 JanusGraph 启动时报 Solr6Index 实例化失败解决
      • Superset
        • urllib3 v2 only supports OpenSSL 1.1.1+
      • Jsvc
        • jsvc 依赖缺失导致 rpm 构建失败
      • Zookeeper
        • ZooKeeper 构建(缺少 hostname 命令)
        • cppunit-devel 依赖缺失解决方案
      • Hive
        • org.apache.logging.slf4j.Log4j.Marker is not public 解决方案
      • Sqoop
        • xmlto is needed by 解决方法
        • lsb_release、rsync 缺失导致构建中断
        • asciidoc 警告与 relnotes.py 语法不兼容分析
      • Cloudbeaver
        • SelectExpressionItem cannot be resolved 报错分析
      • Bigtop-select
        • bigtop-select 打包缺 compat 报错修复
        • bigtop-select 打包缺 control 文件报错修复
      • Knox
        • xmlsectool 依赖缺失问题解析
        • webhdfs-test 依赖收敛冲突问题处理
        • Invalid keystore format 问题处理
        • Knox is not allowed to impersonate admin
        • X-Forwarded-For 406 错误的原因与处理
      • Hue
        • Hue 访问 Hadoop 权限问题
        • Hue 访问 Yarn 权限问题
        • Hue 访问 Impala 时间格式问题
        • requests-kerberos 兼容性问题
        • libmariadb.so.3 缺失导致 syncdb 失败
        • 生产环境下解决方案——Hue/query_api.py
  • 系统适配

    • Kylin V10系列
      • 通用部分
        • not set for current OS
          • 解读-不支持操作系统解读
          • 解决-增加系统支持范围(一)
          • 解决-增加系统支持范围(二)
          • 解决-增加系统支持范围(三)
          • 解决-增加系统支持范围(四)
        • 解决-TLS1.3导致依赖下载失败终极办法
    • Rocky系列
      • 案例-Ambari重启失败
        • 解读-Ambari3.0.0重启失败问题
        • 解决-追加日志锚点
        • 解决-进一步分析与改造[一]
        • 解决-进一步分析与改造[二]
      • 案例-数据库连接问题
        • 解读-安装完毕后出现Unable to load version data from server
      • 案例-日志级别控制问题
        • 解读-Ambari3.0.0无法调整日志输出级别
        • 解决-临时处理日志级别不生效
        • 解决-源码级处理日志不生效
      • 案例-找不到snappy-devel
        • 解决-HDFS报snappy-devel包缺失现象
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Ubuntu系列
      • 案例-首次编译环境处理
        • 解决-dpkg-buildpackage依赖缺失
        • 解决-devscripts依赖缺失
        • 首次编译-环境初始化
      • 案例-Bigtop适配Debian
        • 解读-bigtop-select支持deb
        • 解决-Step1-解除限制拥抱deb
        • 解决-Step2-补全代码结构
      • 案例-安装中遇到的问题
        • 解读-APT私有镜像验证失败剖析
        • 解决-快速处理APT私有镜像验证失败问题
      • 案例-编译高级功能
        • 解读-开启Hadoop下ISAL-L和PMDK功能
        • 解决-ISAL-L和PMDK功能完整环境包
    • Centos系列
    • OpenEuler系列
  • 监控与调优

    • Ambari-Metrics插件
    • Infinity插件
      • 准备工作
        • Ambari-Metrics插件失效原因
        • Infinity 插件选择与安装小技巧
        • Grafana9.3.2+Infinity2.3.1
          • Grafana快速安装Infinity插件
        • Grafana11.5.2+Infinity3.4.1
          • Grafana快速安装Infinity插件
      • 创建最简DEMO
        • Grafana9.3.2+Infinity2.3.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
        • Grafana11.5.2+Infinity3.4.1
          • 快速创建一个简单demo
          • Panel JSON 配置示例
    • 组件配置调优
      • HDFS
        • [0001]访问 HDFS Web UI Logs Unauthorized 失败
        • [0001]>>>>>>Hadoop管理员配置优化
      • RANGER
        • [0002]Ranger 审计日志时间与系统时间不一致调整
        • [0002]>>>>>日期统一规则调优
        • [0001]Resource lookup fail 线程池超时优化
        • [0001]>>>>>>线程池与超时参数调优
    • 组件调优指南
    • 1v1指导调优
  • BUG临时处理

    • 版本-v2.2.2-以前
      • [22213]Ambari 3.0.0 滚动重启只执行一台主机修复
      • [22213]解决办法
      • [22212]Ambari 3.0.0 左侧服务菜单滚动条缺失修复
      • [22212]解决办法
      • [22211]Atlas 缺失 __AtlasUserProfile
      • [22211]解决办法
      • [22210]Atlas Hook 无权限访问 Kafka Topic
      • [22210]解决办法
      • [22209]Ranger Kafka Lookup 缺少 JAAS 配置
      • [22209]解决办法
      • [22208]Atlas Hook 消费 Kafka 报错
      • [22208]解决办法
      • [22207]Hue 内访问 SparkSql 失败
      • [22207]解决办法
      • [22206]Ranger 调用 Knox Topologies 失败
      • [22206]解决办法
      • [22205]Ranger Admin 轮刷ZK 缺失 JAAS
      • [22205]解决办法
      • [22204]KNOX policymgr-ssl 启动告警
      • [22204]解决办法
      • [22203]Hue 服务启动后秒退
      • [22203]解决办法
      • [22202]Hue 启动失败: hadoop 用户不存在
      • [22202]解决办法
      • [22201]Hive 使用 Tez 引擎插入数据失败
      • [22201]解决办法
    • 版本-v2.1.0-以前
      • Sqlline 启动卡死问题处理
  • 实验室

    • VIEW插件
      • CAPACITY-SCHEDULER-VIEW
        • Ambari CAPACITY-SCHEDULER 插件安装详解
      • FILE-VIEW
        • Ambari FILE-VIEW 插件安装详解
    • JIRA速查
    • 虚拟环境思路
GitHub (opens new window)
  • Ambari 深度专题

  • Bigtop 方法论

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

  • Ambari Plus 思考

    • Ambari Server HA
      • 控制面不能只靠一台机器
      • 一把租约如何守住唯一 Active
      • 从一次启用操作追到主备就绪
        • 从页面到服务端:先计划,再执行
        • 预检查并不是“ping 一下目标主机”
          • 当前 Server 与集群状态
          • 数据库与目标主机
          • 入口与安全
        • 一次启用操作的阶段图
        • 第一步:先把通信身份准备好
        • 第二步:安装 Standby,但先不要启动
        • 第三步:通过 Agent mTLS 完成安全引导
        • 第四步:Standby 先以“不可选举”模式启动
        • 第五步:Agent 候选采用两阶段切换
        • 第六步:最后才打开选举
        • 启用成功不等于故障切换通过
        • 持久化 Operation 怎样支持续跑
        • 失败时怎样保持可恢复
        • 源码里的责任边界
        • 把源码理解转化为运维判断
        • 接着看什么
      • 把 Ambari Server HA 稳稳地跑起来
  • Redis集成实战

  • 通用代码模板

  • 各组件代码

  • 技术专题
  • Ambari Plus 思考
  • Ambari Server HA
JaneTTR
2026-08-17
目录

从一次启用操作追到主备就绪

这一篇解决什么问题

页面上的“开启”最终会落到一条跨主机、跨进程的控制链路。理解它的最好方法,是沿着一次操作依次看计划、mTLS、远端安装、安全引导、主节点提交、Agent 候选切换和选举开启。

状态载体

Plan 负责冻结决策,Operation 负责记录阶段、结果和可继续的恢复点。

顺序约束

先建立可信通信,再安装和引导 Standby,最后切 Agent 并开放选举。

失败原则

先读原状态再继续或回退,不用第二笔操作覆盖第一笔操作留下的现场。

config:
  target: _self
data:
  - name: 状态载体
    desc: Plan 负责冻结决策,Operation 负责记录阶段、结果和可继续的恢复点。
    bgColor: '#eef6ff'
    textColor: '#1f4e79'
  - name: 顺序约束
    desc: 先建立可信通信,再安装和引导 Standby,最后切 Agent 并开放选举。
    bgColor: '#eefaf4'
    textColor: '#176b4d'
  - name: 失败原则
    desc: 先读原状态再继续或回退,不用第二笔操作覆盖第一笔操作留下的现场。
    bgColor: '#fff8e8'
    textColor: '#79520b'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

单节点 Ambari Server 扩展为 Active/Standby,远比安装第二个 RPM 复杂。新节点需要拿到完全一致的数据库连接、服务配置和安全材料;已有 Agent 要从单地址迁移到候选列表;两台 Server 还要在一个明确时刻从“单机语义”切换到“共享 Lease 语义”。

如果这些动作没有顺序约束,最容易出现三类半成品:Standby 已启动却没有写围栏、Agent 只认识旧地址、主节点已经进入 HA 而新节点尚不能接管。Ambari Plus 因此把启用过程建模成一笔可持久化、可检查、可继续的 Operation,而不是一串临时 SSH 命令。

# 从页面到服务端:先计划,再执行

Server HA 使用独立的 /api/v2/control-plane/ha 资源域。正式的 Server HA 页面通过 /api/v2/control-plane/ha/server 这一层进入预检查、计划和操作接口。这样可以把“用户想开启 HA”与“后端已经开始改变环境”分开。

一次启用大致经过三个对象:

对象 负责什么 是否改变环境
Precheck 收集当前 Server、数据库、Agent、目标主机和任务状态 否
Plan 固化候选节点、入口模式、版本、安全与容量决策 否
Operation 按阶段执行,记录每一步输入、状态、错误与恢复点 是

页面先展示计划,让使用者在真正执行前看见阻塞项和即将发生的变化。只有计划有效,才允许创建 Operation。后续页面刷新、浏览器断流或 Active 切换,都通过 Operation 标识重新读取状态,不会重新提交整笔启用请求。

# 预检查并不是“ping 一下目标主机”

启用前需要同时证明当前控制面仍然安全、目标节点能承担 Server,以及整个集群处于可变更状态。

# 当前 Server 与集群状态

  • 当前节点必须是可写的单节点 Active;
  • 没有正在运行的安装、升级、启停等控制任务;
  • 没有其他高可用变更持有全局变更锁;
  • 当前 Ambari Server 的版本和 release identity 满足 HA 最低要求;
  • 当前 Server 主机上的 Ambari Agent 在线且健康。

# 数据库与目标主机

  • 使用可被两个 Server 稳定访问的外部数据库端点;
  • 目标主机不是当前 Server,且其 Agent 在线;
  • 目标主机满足内存、磁盘和运行环境要求;
  • 离线仓库中存在与当前 Server 完全一致的目标软件包;
  • 主机名使用稳定 FQDN,正反向解析和时间同步正常。

# 入口与安全

  • 明确使用两个直连端点,还是接入外部负载均衡;
  • mTLS 材料可以安全复用或重新建立;
  • Agent 证书校验已具备启用条件;
  • 候选节点、Agent 状态探测路径和重连分散参数可生成。

当前默认容量基线

默认规划会检查目标主机至少有 4096 MiB 可用内存和 2048 MiB 可用磁盘,并以最多 500 个 Agent 作为默认容量档位的参考上限。实际生产还要结合服务数量、告警规模、并发任务和 JVM 参数评估。

预检查结果不是一句“通过/失败”,而应指向可以处理的阻塞项。例如版本不一致时要指出期望 release identity;数据库是本地地址时要先迁移外部数据库;目标 Agent 离线时要先恢复 Agent,而不是让安装阶段再报一条模糊的 SSH 错误。

# 一次启用操作的阶段图

Ambari Server HA 从规划到主备就绪的启用链路

图中的六个视觉节点依次对应:规划、mTLS 身份、Standby 安装、Agent 候选、Lease 生效与唯一 Active 就绪。每个阶段的精确完成条件见下表。

阶段 核心动作 完成标志
规划与锁定 固化 Plan,获取 HA 变更锁 操作对象和入口模式不再漂移
安全准备 准备 mTLS,完成目标主机远端预检查 当前单节点 Server 恢复可写,目标环境通过
Standby 建立 安装同版本 Server,安全引导配置,以关闭选举方式启动 新节点可观察共享状态,但不能竞争 Active
拓扑提交 当前 Server 提交 epoch,Agent 执行 PREPARE 与 ACTIVATE Agent 认识两个候选并通过 TLS 选择 Active
协议生效 打开选举,验证唯一 Active 与故障接管 主备、入口、Agent 和原 Operation 全部收敛

下面逐段拆开看每个顺序为什么不能随意交换。

# 第一步:先把通信身份准备好

第二台 Server 的引导不直接把数据库密码、主密钥或证书内容塞进普通 Ambari 任务。正式通道依赖 Agent 与 Server 之间的双向 TLS,所以启用流程会先确认当前单节点环境已经具备可用的 mTLS。

如果当前环境使用平台管理的 PKCS12 材料,并且证书用途、别名和身份都满足要求,可以复用;自定义或无法确认来源的 keystore 不会被默认为可复制材料。第一次从单节点切换到双向 TLS 时,当前 Server 可能需要一次受控重启,流程会等待它以 SINGLE_ACTIVE 身份恢复后再继续。

这个顺序形成了一条清楚的边界:

  • Server 启动前,可以准备配置、数据库连接和首次 mTLS 材料;
  • Server 启动后,不再靠临时脚本反复改写路由、替换证书或重装 Agent;
  • 后续变更通过正式 API、持久化 Operation 和受校验的 Agent 动作完成。

这样可以避免“页面显示成功,但运行中又被外部脚本改回另一套配置”的状态漂移。

# 第二步:安装 Standby,但先不要启动

目标 Agent 接收远端安装动作后,会再次检查目标主机环境,并安装与当前 Server release identity 完全一致的软件包。只比较大版本号是不够的:两边若来自不同构建,数据库模型、接口或 HA 行为都可能不一致。

安装完成后,目标 Ambari Server 保持停止。此时它还没有数据库配置、主密钥和 HA 身份,启动只会产生一个没有资格参与集群的进程。把“软件已安装”和“节点可启动”拆开,是整个流程的重要安全点。

# 第三步:通过 Agent mTLS 完成安全引导

当前 Active 生成受控的引导包,通过目标主机已经建立的 Agent mTLS 通道发送。目标 Agent 在落盘前会校验:

  • 压缩包和清单的大小上限;
  • 每个文件的路径,拒绝目录穿越;
  • 文件哈希与清单是否一致;
  • 文件模式、所有者和目标位置是否合法;
  • 目标 Server 是否仍处于停止状态;
  • 包内 release identity 是否与计划一致。

通过后才以原子方式安装数据库连接、Server 配置、主密钥和允许复用的证书材料。引导包大小当前限制在 64 MiB,避免把不受控的大文件通过控制通道传输。

不要手工复制敏感文件来“补步骤”

手工 scp 主密钥或 keystore 看起来很快,却绕过了来源、哈希、权限和节点状态校验,也无法被 Operation 准确记录。失败时应修复正式引导阶段并重试,而不是在两台节点上拼出一套无法证明一致性的配置。

# 第四步:Standby 先以“不可选举”模式启动

安全引导完成后,目标 Server 可以启动,但它的选举开关仍然关闭。此时节点会读取共享数据库、观察当前 Lease,并稳定在 Standby;即使发现机会也不会获取 Active 资格。

这相当于先验证四件事:

  1. 新 Server 能使用同一数据库;
  2. 节点身份和 HA 配置可以加载;
  3. mTLS、端口和运行目录没有问题;
  4. 写围栏确实阻止它处理普通管理请求。

确认这些条件后,当前 Active 才提交新的 HA epoch。epoch 用来标记这是一套已经形成的候选集合,避免旧候选配置与新一轮 HA 拓扑混用。

# 第五步:Agent 候选采用两阶段切换

Agent 从单个 Server 地址切换到 hadoop1.test.com,hadoop3.test.com 这样的候选列表,也不能一步完成。实现上分为 PREPARE 与 ACTIVATE:

阶段 写入什么 Agent 行为
PREPARE 写入两个候选、状态接口、epoch 和 TLS 校验要求,但 HA 仍关闭 继续连接原 Server,配置已具备回退空间
ACTIVATE 打开 ha_enabled,按计划分批重启 Agent 通过状态探测选择 Active Ready,并记录最新 Term
SINGLE 回退或移除成员时恢复单 Server 配置 清理 HA 候选语义,回到指定唯一地址

两阶段切换避免了配置刚写一半,Agent 就开始连接一个尚未准备好的 Standby。Agent 重启也按照分散窗口执行,减少大集群同时重连带来的压力。

切换后,Agent 侧的关键语义类似下面这样。这里用于核对,不建议手工编辑代替向导:

[server]
ha_enabled=true
ha_candidates=hadoop1.test.com,hadoop3.test.com
ha_status_path=/api/v2/control-plane/ha/agent-status
ha_reconnect_spread_seconds=10

[security]
ssl_verify_cert=1
1
2
3
4
5
6
7
8

# 第六步:最后才打开选举

只有在 Standby 可观测、主节点已提交 epoch、Agent 已认识两个候选后,流程才打开 Standby 的选举能力。此时两台 Server 正式进入共享 Lease 协议。

这个时刻以后,任何节点失去 Lease 或无法确认数据库状态都必须自我围栏;新 Active 需要先完成状态恢复,才能通过 readiness。单节点向主备的语义切换到这里才真正完成。

# 启用成功不等于故障切换通过

实现层把故障验收作为独立阶段,是因为静态检查无法证明真实接管链路。完整验收至少观察:

  • 两台进程同时存活时只有一个 Active Ready;
  • 停止当前 Active 后,Standby 获取更高 Term;
  • 新 Active 完成恢复后 readiness 才成功;
  • Agent 分散重连,且没有同 Term 双 Active;
  • 原 Active 恢复后以 Standby 回归;
  • 切换前已存在的 Operation 仍按原标识读取;
  • 期间没有自动重放写请求。

如果生产窗口暂时不允许自动演练,可以先完成静态启用,但应明确标记“主备已建立,故障接管尚未验收”,并尽快安排维护窗口。两者不能用同一个“完成”状态混在一起。

# 持久化 Operation 怎样支持续跑

每个阶段都把状态和必要结果写入数据库。页面断开并不终止服务端操作;Active 切换后,新节点读取同一 Operation,判断哪些阶段已完成、哪些步骤允许幂等重试。

不同动作的恢复策略并不相同:

动作 合理的恢复方式
查询预检查或阶段状态 直接重读
目标软件包已安装 校验版本与服务状态后跳过或继续
安全引导已完成 重新校验清单和目标文件,不盲目覆盖
Agent 候选已 PREPARE 读取标记,继续 ACTIVATE 或执行正式回退
Server 启动请求超时 先查进程、角色和 liveness,再决定是否重试
浏览器提交操作时断流 按原 Operation 查询,绝不自动再创建一笔

因此幂等不是“同一个命令多跑几次没关系”,而是每一步都有可证明的前置状态、提交标记和恢复判断。

# 失败时怎样保持可恢复

失败位置 此时通常是什么状态 优先处理
预检查不通过 环境尚未变更 修复版本、数据库、Agent、容量或任务阻塞后重新规划
mTLS 准备失败 当前 Server 仍保持单节点语义 恢复证书或 Server,确认 SINGLE_ACTIVE 后续跑
远端安装失败 目标 Server 未启动 修复仓库/包/权限,按原 Operation 重试
安全引导失败 目标 Server 仍应停止 查清单、哈希、权限和证书,避免手工拼接配置
Standby 启动失败 当前 Active 继续服务,选举尚未开启 修复目标日志与数据库连接,再启动观察节点
Agent PREPARE 部分失败 Agent 仍以原 Server 为准 补齐失败主机,或使用正式 SINGLE 回退
Agent ACTIVATE 部分失败 部分 Agent 已使用候选模式 依据批次和标记继续收敛,不能整批盲目重放
选举开启后验收失败 主备协议已经生效 保持唯一 Active,先恢复失败成员或入口,再重新演练

# 源码里的责任边界

下面列出几处适合继续阅读的入口。类名用于帮助二次开发者定位职责,不需要把所有逻辑堆进同一个资源类。

关键实现入口
实现 主要职责
ControlPlaneHaResource /api/v2/control-plane/ha 资源入口、概览和阶段 API
ControlPlaneHaPlanningService 预检查、计划生成、版本/数据库/容量/安全约束
ControlPlaneHaCoordinator Lease 获取与续租、角色转换、自我围栏
ControlPlaneHaPromotionService 新 Term 下的集群、任务、仓库、告警和凭据恢复
ControlPlaneHaWriteFenceFilter 按角色、Ready 和 Term 阻止过期读写
ServerHaCandidateSelector Agent 候选探测、最高 Term 选择和会话确认
Agent HA 配置动作 PREPARE、ACTIVATE、SINGLE 三阶段配置与重启
安全引导动作 mTLS 传输、清单/哈希/路径校验和原子安装

我在看这部分实现时,最关注的不是某一个类有多少行,而是每个副作用有没有同时具备四样东西:持久化状态、前置校验、角色围栏和可恢复路径。四者都在,跨主机操作才经得起中断。

# 把源码理解转化为运维判断

当启用页面卡在某个阶段时,可以沿着下面的顺序判断,而不是直接重装:

  1. 原 Operation 当前停在哪个阶段,是否仍在运行;
  2. 当前唯一 Active 是谁,Term 和 epoch 是否一致;
  3. 失败动作发生在 Server 启动前还是启动后;
  4. 目标主机上的包、配置、证书和进程状态是否与阶段提交标记一致;
  5. Agent 是单地址、PREPARE 还是已经 ACTIVATE;
  6. 应该继续、正式回退,还是先恢复唯一 Active。

这条思路能把“开启失败”拆成具体的状态恢复问题,也能避免因为重新点击按钮制造第二笔冲突操作。

# 接着看什么

下一篇回到 Ambari Plus 页面,给出从环境准备、节点选择到切换验收的完整操作路径,并把源码里的检查项翻译成可以逐项执行的清单。

把 Ambari Server HA 稳稳地跑起来

按页面开启主备,并完成角色、Agent、入口和任务恢复验收。

回看唯一 Active 架构

对 Lease、Term、晋升屏障或 Agent 选主仍有疑问,可以回到架构篇。

config:
  target: _self
data:
  - name: 把 Ambari Server HA 稳稳地跑起来
    desc: 按页面开启主备,并完成角色、Agent、入口和任务恢复验收。
    link: /v/custom/thoughts/ambari-server-ha/enable/
    bgColor: '#eef6ff'
    textColor: '#1f4e79'
  - name: 回看唯一 Active 架构
    desc: 对 Lease、Term、晋升屏障或 Agent 选主仍有疑问,可以回到架构篇。
    link: /v/custom/thoughts/ambari-server-ha/architecture/
    bgColor: '#eefaf4'
    textColor: '#176b4d'
1
2
3
4
5
6
7
8
9
10
11
12
13
#Ambari Server#高可用#源码分析#Ambari Agent
一把租约如何守住唯一 Active
把 Ambari Server HA 稳稳地跑起来

← 一把租约如何守住唯一 Active 把 Ambari Server HA 稳稳地跑起来→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
一把租约如何守住唯一 Active
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式