TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)
  • 方法论

    • 补丁的理解与存在意义
    • 补丁实战-IDE的使用
    • 采用RPM或DEB安装解读
    • 多版本管理解读-全局概览
      • 一、组件级别的多版本管理(distro-select 实现)
        • 1. 目录结构与软链原理
        • 2. 软链接切换机制与实际效果
        • 3. 工程场景举例
        • 4. distro-select 工具的作用
      • 二、配置级别的多版本管理(alternatives 实现)
        • 1. 配置多版本的需求
        • 2. alternatives 注册与软链结构
        • 3. /etc 目录下的链路追踪
        • 4. 实践意义与应用场景
      • 三、体系优势与最佳实践
        • 推荐做法
    • 多版本管理解读-组件级
    • 多版本管理解读-配置级
    • Gradle命令逆向剖析
  • 组件编译技巧

  • 打包技巧-RPM

  • 实战-日志&源码解读全链路周期

  • 其他技巧

  • GOD-Bigtop
  • 方法论
JaneTTR
2025-07-03
目录

多版本管理解读-全局概览

在复杂的大数据集群环境中,如何安全、平滑地实现多版本共存与切换,是平台稳定运维和持续集成的核心诉求。bigtop 社区通过“组件级 + 配置级”双层机制,构建了一套强大的多版本管理体系。下面详细拆解其两大支柱:组件级别多版本管理和 配置级别多版本管理。

# 一、组件级别的多版本管理(distro-select 实现)

# 1. 目录结构与软链原理

bigtop 的所有核心组件(如 Hadoop、Redis、Zookeeper 等)都被安装在 /usr/bigtop/{version}/{component} 这样的独立目录中。每个版本自成一体、互不干扰,实现了天然的多版本物理隔离。

而 /usr/bigtop/current 目录下,则通过软链接(symbolic link)指向当前激活版本,实现组件运行时的动态版本切换。

笔记

如下图所示,current 软链为每个组件提供了统一的入口路径,避免直接依赖具体版本目录。

组件多版本目录结构

# 2. 软链接切换机制与实际效果

以 Zookeeper 为例:

  • /usr/bigtop/3.2.0/zookeeper:为 3.2.0 版本的安装目录
  • /usr/bigtop/current/zookeeper:始终软链指向正在使用的 zookeeper 版本

切换版本时,无需重新安装或移动目录,只需更新软链即可。

current 软链接实际应用(ZK)

# 3. 工程场景举例

  • 灰度升级/回滚:测试新版本后,正式切换只需 ln -snf 更新软链,出错随时回滚
  • 多组件并存:不同业务可指向不同版本,互不影响
  • 运维脚本/监控统一:所有自动化均指向 /usr/bigtop/current/{component},无需感知版本变化

# 4. distro-select 工具的作用

bigtop 提供了专门的 distro-select(或 bigtop-select)脚本,实现:

  • 自动管理软链接关系
  • 注册所有组件及其子服务(如 master/slave/client)
  • 支持批量切换、查询当前状态等操作

提示

distro-select 保证了多版本切换的安全性、可回滚性与操作简洁性,是大数据平台工程化升级的核心工具。

# 二、配置级别的多版本管理(alternatives 实现)

# 1. 配置多版本的需求

即便二进制支持多版本,配置文件如果无法多版本隔离与切换,整个多版本体系就会失效。bigtop 利用 Linux 系统自带的 alternatives 工具,解决了配置级别的多版本托管。

# 2. alternatives 注册与软链结构

每个组件的 conf 目录都注册到 alternatives:

  • /usr/bigtop/3.2.0/zookeeper/conf
  • /usr/bigtop/3.2.1/zookeeper/conf
  • ...

alternatives 生成 /etc/zookeeper/conf 软链接,指向当前选定版本的 conf。

conf 配置软连接

# 3. /etc 目录下的链路追踪

进一步跟踪 /etc/zookeeper/conf:

etc conf 软连接

最终会发现,其实又回指向 bigtop 管理下的具体 conf 目录:

alternatives 真实配置路径

# 4. 实践意义与应用场景

  • 多集群/多环境切换:开发、测试、生产环境各自独立配置,升级不影响其它环境
  • 快速切换与一致性:升级只需 alternatives 切换配置链,重启服务即可生效
  • 回滚风险可控:配置出错可瞬间回退至历史版本
  • 支持自定义参数:特殊集群参数、机房参数均可独立配置与维护

笔记

alternatives 与 distro-select 形成了从组件二进制到配置文件的全链路多版本切换能力。

# 三、体系优势与最佳实践

层级 主要工具 管理对象 切换方式 工程意义
组件级 distro-select 二进制包、脚本 current 软链 升级/回滚无痛,兼容多版本
配置级 alternatives conf 配置目录 /etc/conf软链 配置多环境切换、快速回退、隔离

# 推荐做法

  • 所有自动化/运维脚本/监控配置均以 current 为根路径,避免硬编码具体版本
  • 升级和回滚流程只做软链切换,原有目录内容不动,极大提升系统安全性
  • 遇到多环境(测试/生产/回归)混跑需求时,可以灵活配置不同 current/alternatives 指向,互不干扰
#Ambari#Redis#Stack集成#大数据运维
采用RPM或DEB安装解读
多版本管理解读-组件级

← 采用RPM或DEB安装解读 多版本管理解读-组件级→

最近更新
01
bigtop-select 打包缺 compat 报错修复 deb
07-16
02
bigtop-select 打包缺 control 文件报错修复 deb
07-16
03
首次编译-环境初始化 必装
07-16
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式