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安装解读
    • 多版本管理解读-全局概览
    • 多版本管理解读-组件级
    • 多版本管理解读-配置级
      • 一、alternatives 工具原理简介
        • 1. 核心作用
        • 2. 常用 alternatives 操作
      • 二、bigtop 集成 alternatives 的工程实现
        • 1. 自动植入:rpm 安装阶段批量注册
        • 2. 手动切换/查询配置版本
        • 3. Zookeeper 实战案例【官方】
      • 三、Ambari 集成场景下的自动生效
    • Gradle命令逆向剖析
  • 组件编译技巧

  • 打包技巧-RPM

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

  • 其他技巧

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

多版本管理解读-配置级alternatives

bigtop 平台实现多版本管理,不仅限于二进制和运行环境,还依赖于配置文件的多版本隔离与灵活切换。这背后核心依赖于 Linux 系统的 alternatives 工具。本文将分为两大部分详细解读其原理与大数据工程落地。

# 一、alternatives 工具原理简介

# 1. 核心作用

alternatives 是 Linux 系统用于同一功能多套实现的管理工具,典型如 JDK、Python 多版本,或命令、配置文件的多版本切换。

  • 通过软链接注册和切换,实现无需手动重命名/移动。
  • 支持自动/手动模式,方便运维自动化。

image-20250703172711597

# 2. 常用 alternatives 操作

操作 命令示例 说明
注册新实现 alternatives --install /etc/redis/conf redis-conf /path/conf 30 注册新 conf
查看当前状态 alternatives --display redis-conf 查看当前软链和候选实现
手动切换实现 alternatives --set redis-conf /usr/bigtop/3.2.1/redis/conf 手动切换到指定 conf
移除实现 alternatives --remove redis-conf /usr/bigtop/3.2.0/redis/conf 移除指定实现

提示

alternatives --display {name} 可以直观查看当前 conf 软链指向、所有注册的实现路径及优先级。

# 二、bigtop 集成 alternatives 的工程实现

bigtop 在组件安装阶段自动植入 alternatives 注册,让运维几乎“零感知”即可实现配置多版本治理。其机制与实际脚本如下:

# 1. 自动植入:rpm 安装阶段批量注册

安装大数据组件的 rpm 包时,会在 %post 阶段自动完成 conf 注册。

%post
if [ "$1" = 1 ]; then
    mkdir -p %{np_etc_component_name}
    %{alternatives_cmd} --install %{np_etc_component_name}/conf %{component_name}-conf %{etc_component}/conf.empty 30
    mkdir -p %{np_var_log_component_name}
    mkdir -p /var/lib/%{component_name}
    chown -R %{user_name}:%{group_name} /var/lib/%{component_name}
fi
1
2
3
4
5
6
7
8

alternatives 体系下的 conf 软连接结构

笔记

  • /etc/{component}/conf 会自动变成软链接(由 alternatives 托管)
  • 新版本/老版本注册后,conf 都能多版本共存

# 2. 手动切换/查询配置版本

手动管理时(如升级或回滚),只需用 alternatives 命令:

  • 查询当前 conf 指向(如 redis):

    alternatives --display redis-conf
    
    1

    输出示例:

    redis-conf - status is auto.
     link currently points to /usr/bigtop/3.2.0/redis/conf
    /usr/bigtop/3.2.0/redis/conf - priority 30
    /usr/bigtop/3.2.1/redis/conf - priority 20
    Current `best' version is /usr/bigtop/3.2.0/redis/conf.
    
    1
    2
    3
    4
    5
  • 手动切换 conf 版本:

    alternatives --set redis-conf /usr/bigtop/3.2.1/redis/conf
    
    1
  • 验证软链:

    ls -l /etc/redis/conf
    
    1

# 3. Zookeeper 实战案例【官方】

Zookeeper 配置切换同样用 alternatives 机制。实际查询:

alternatives --display zookeeper-conf
1

输出:

image-20250703172606756

zookeeper-conf - status is auto.
 link currently points to /usr/bigtop/3.2.0/etc/zookeeper/conf.dist
/usr/bigtop/3.2.0/etc/zookeeper/conf.dist - priority 30
Current `best' version is /usr/bigtop/3.2.0/etc/zookeeper/conf.dist.
1
2
3
4

提示

/etc/zookeeper/conf 当前就指向了 3.2.0 版本下的 conf.dist 目录。

# 三、Ambari 集成场景下的自动生效

在使用 Ambari 集群管理时,组件配置切换、激活一般全部由 Ambari 自动处理:

  • 部署、重启、升级、回滚都会自动调整 alternatives
  • 运维人员无需手动操作 alternatives,所有组件 conf 会自动保持与实际激活版本一致
  • 配合 UI,管理更直观、无感知

笔记

只要用 Ambari 接管,alternatives 的 conf 切换全部自动完成,完全无需手动干预。

#Ambari#Redis#Stack集成#大数据运维
多版本管理解读-组件级
Gradle命令逆向剖析

← 多版本管理解读-组件级 Gradle命令逆向剖析→

最近更新
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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式