TT Bigdata TT Bigdata
首页
  • 部署专题

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

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

    • 更新说明
  • Ambari-Env

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

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

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

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

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

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

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

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)

JaneTTR

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

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

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

    • 更新说明
  • Ambari-Env

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

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

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

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

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

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

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

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)
  • 准备阶段

  • 理解packages.gradle

    • Bigtop 构建过程中 RPM 打包路径解析
    • Bigtop 如何统一管理各组件版本
      • 1. 版本统一注入机制
      • 2. 编译体系中的引用场景
      • 3. 实际生成内容截图参考
    • Bigtop 如何插入补丁
    • Bigtop 应用补丁
    • Bigtop 多版本编译源码改造(一)
    • Bigtop 多版本编译源码改造(二)
  • 理解bigtop.bom

  • Hadoop编译

  • Flink编译

  • Spark编译

  • Atlas编译

  • Superset编译

  • Zookeeper编译

  • Hbase编译

  • Hive编译

  • Kafka编译

  • Solr编译

  • Tez编译

  • Zeppelin编译

  • 组件编译-Bigtop
  • 理解packages.gradle
JaneTTR
2022-12-18
目录

Bigtop 如何统一管理各组件版本

在 Bigtop 的编译体系中,不同组件(如 Hadoop、Hive、Spark、Kafka 等)虽然有各自的打包脚本与依赖逻辑,但所有版本号的来源都被统一收敛在一个关键文件中:

build/<component>/rpm/SOURCES/bigtop.bom
1

这个文件是由构建系统自动生成,在编译正式执行前就写入到构建目录中,其目的是:为整个打包系统提供一套 组件版本的集中注入变量表。

# 1. 版本统一注入机制

我们来看 Bigtop 是如何实现这个机制的,核心代码如下:

// 写入 bigtop.bom 文件,包含所有组件版本信息
def bomWriter = new File("$PKG_BUILD_DIR/rpm/SOURCES/bigtop.bom").newWriter()
bomVersions.each { bomWriter << "$it\n" } // 每一行为 KEY=VALUE 格式
bomWriter.close()
1
2
3
4

这段逻辑在构建任务启动前被执行,用于将 bomVersions 列表中的每一个版本信息输出到文本文件,最终内容形如:

HADOOP_VERSION=3.3.4
HIVE_VERSION=3.1.3
SPARK_VERSION=3.2.3
KAFKA_VERSION=2.8.1
...
1
2
3
4
5

这些变量会作为 编译前注入 提供给构建过程中的各类脚本或 rpm 构建命令使用。

# 2. 编译体系中的引用场景

bigtop.bom 被生成后,可被多种构建脚本和配置方式读取引用:

场景 说明
%define in .spec 文件 .spec 文件中可通过 %define HADOOP_VERSION %{expand:%%{HADOOP_VERSION}} 绑定变量
%setup / %build 阶段 RPM 构建脚本中直接引用变量值
构建 shell 脚本(如 install.sh) 通过 source bigtop.bom 加载所有版本号为环境变量
Ambari 等部署工具 可读取该文件用于版本展示、部署判断、UI 回显等

提示

相比传统方式将版本硬编码在多个地方,Bigtop 通过 bigtop.bom 做到了集中统一维护 + 多端引用注入,极大提升了可维护性。

# 3. 实际生成内容截图参考

如下图所示,这是某次构建 Ranger 时自动生成的 bigtop.bom 文件内容:

版本变量清单

你可以看到所有版本号都以 KEY=VALUE 的形式列出,是构建过程中的 核心依赖输入。

#Bigtop#版本管理#编译体系
Bigtop 构建过程中 RPM 打包路径解析
Bigtop 如何插入补丁

← Bigtop 构建过程中 RPM 打包路径解析 Bigtop 如何插入补丁→

最近更新
01
Pandoc 缺失导致 SparkR 构建失败
06-08
02
Cyrus SASL/GSASL 缺失解决
06-07
03
Hadoop_3.3.4 编译实战 1.0.0+
06-06
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式