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

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 深度专题

  • Bigtop 方法论

    • Bigtop 深度专题
    • 方法论

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

    • 打包技巧-DEB

    • 打包技巧-RPM

    • 实战-日志与源码解读

    • 其他技巧

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

  • Ambari Plus 思考

  • Redis集成实战

  • 通用代码模板

  • 各组件代码

  • 技术专题
  • Bigtop 方法论
  • 方法论
JaneTTR
2025-07-03
目录
一、组件级别的多版本管理(distro-select 实现)
1. 目录结构与软链原理
2. 软链接切换机制与实际效果
3. 工程场景举例
4. distro-select 工具的作用
二、配置级别的多版本管理(alternatives 实现)
1. 配置多版本的需求
2. alternatives 注册与软链结构
3. /etc 目录下的链路追踪
4. 实践意义与应用场景
三、体系优势与最佳实践
推荐做法

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

在复杂的大数据集群环境中,如何安全、平滑地实现多版本共存与切换,是平台稳定运维和持续集成的核心诉求。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 指向,互不干扰
#Bigtop#源码解析#Ambari#Redis#Stack集成
采用RPM或DEB安装解读
多版本管理解读-组件级

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

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