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)
  • 方法论

  • 组件编译技巧

  • 打包技巧-RPM

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

    • Step0-打包完整链路
    • Step1-bigtop.bom配置
      • 1. bigtop.bom 配置结构与分层
      • 2. packages.gradle 参数读取与流转主线
      • 3. 参数流转全景梳理
        • 3.1 全局版本与路径注入
        • 3.2 组件循环与动态任务链
        • 3.3 组件参数的全链路贯穿与自动接力
        • 3.4 源码包下载与本地缓存优先
      • 4. 总结与实用建议
    • Step2-源码包触发下载
    • Step3-Tarball制备全流程
    • 适用于REDHAT

  • 其他技巧

  • GOD-Bigtop
  • 实战-日志&源码解读全链路周期
JaneTTR
2025-07-03
目录

Step1-bigtop.bom配置

# 1. bigtop.bom 配置结构与分层

bigtop.bom 是整个 Bigtop 编译自动化体系的“元数据中心”。采用 Groovy DSL 格式,参数分层清晰,扩展灵活。如下图所示:

image-20250705101158883

主要结构包括:

区块 说明
全局配置 比如 base_version、stack、仓库源等
dependencies 编译依赖关系管理
components 各组件独立的打包参数和元信息

通过分层管理,方便后续所有自动化脚本灵活引用。

提示

实际工程中只需维护 bom 文件,所有核心参数都可集中配置,无需到处 hardcode。

# 2. packages.gradle 参数读取与流转主线

所有 gradle 构建任务的参数流转,均以 bigtop.bom 为源头。主线逻辑非常直观:

image-20250705102835841

关键读取代码:

final String BOM = System.getProperty('bomfile') ?: "$rootDir/bigtop.bom"
def final config = new ConfigSlurper().parse(new URL("file:$BOM"))
1
2
  • 通过 ConfigSlurper 解析,bigtop.bom 被动态转为 config 对象,后续 gradle 任务链全程引用 config。

# 3. 参数流转全景梳理

# 3.1 全局版本与路径注入

所有全局变量(如 base_version、outputdir、builddir)在 bigtop.bom 统一配置,gradle 脚本直接引用,无需重复声明。

bigtop.bom 配置示例:

bigtop {
  base_version = "3.2.0"
  version = base_version + "-SNAPSHOT"
  outputdir = "/opt/modules/bigtop/output"
  builddir = "/opt/modules/bigtop/build"
}
1
2
3
4
5
6

gradle 调用方式:

config.bigtop.base_version
config.bigtop.version
config.bigtop.outputdir
config.bigtop.builddir
1
2
3
4

笔记

这样所有构建路径、产物路径在全局可控,组件切换、环境变更都能一键管理。

# 3.2 组件循环与动态任务链

bigtop.bom 中的 components 区块,定义了所有需要构建的组件。gradle 解析后,会自动为每个组件生成完整的任务链。

配置示例:

components {
    'redis' { ... }
    'hadoop' { ... }
    // 其余组件...
}
1
2
3
4
5

任务生成流程: image-20250705103441786

  • 未声明的组件自动跳过,简化维护成本。
  • 动态 for-each 生成所有构建、打包、上传、验证等 gradle 任务。

提示

新增组件只需补充一段配置,完全无侵入式改动。

# 3.3 组件参数的全链路贯穿与自动接力

以 Redis 为例,核心参数如何贯穿任务链?

image-20250705101021999

bigtop.bom 示例片段:

'redis' {
    name = 'redis'
    rpm_pkg_suffix = "_" + bigtop.base_version.replace(".", "_")
    relNotes = 'Redis v7.4.0 Release'
    version { base = '7.4.0'; pkg = base; release = 1 }
    tarball {
        destination = "${version.base}.tar.gz"
        source = destination
    }
    url {
        site = bigtop.gh_proxy + "https://github.com/redis/redis/archive/refs/tags/"
        archive = site
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

packages.gradle 参数消费流: image-20250705103637907

字段名 说明 主要用途
name, pkg 组件/包名 任务命名、产物命名
version.base/pkg/release 版本号/包名/发布号 构建参数、rpm产物名
tarball.source/destination 源码包名/归档名 下载、解包、产物路径
url.site/archive 主下载路径/归档 源码拉取、断点补全
rpm_pkg_suffix 包名后缀 多环境产物区分
relNotes 组件说明 日志、产物说明

笔记

所有这些字段在 gradle 任务链中动态引用,减少重复声明,自动完成参数接力。

# 3.4 源码包下载与本地缓存优先

源码包下载也是 bom 配置驱动的,支持多级缓存逻辑:

  • bigtop.bom 配置

    • 维护 tarball、url 字段即可
  • gradle 解析流程

    • 先查本地缓存
    • 未命中则走 url 拉取
    • 支持 gitrepo、archive 多种源灵活切换

image-20250705104232438

代码示例:

def final TARBALL_SRC = config.bigtop.components[target].tarball.source
def final TARBALL_DST = config.bigtop.components[target].tarball.destination
def final DOWNLOAD_DST = config.bigtop.components[target].downloaddst
def final DOWNLOAD_URL = config.bigtop.components[target].downloadurl
1
2
3
4

笔记

其中 downloaddst 字段常由 gradle 任务链中按需动态拼接,充分兼容实际目录结构差异。

# 4. 总结与实用建议

bigtop.bom 是实现大数据多组件自动化编译的核心配置文件。它不仅实现了参数声明与逻辑实现的彻底解耦,还极大提升了整个编译链的灵活性与可维护性。你只需专注于 bom 文件的内容组织,就能实现对 packages.gradle 的统一和中心化驱动。

延伸阅读

如果你希望自定义集成某个新组件,bigtop.bom 也提供了通用模板代码,详见:bigtop.bom通用组件代码

#Ambari#Redis#Stack集成#大数据运维
Step0-打包完整链路
Step2-源码包触发下载

← Step0-打包完整链路 Step2-源码包触发下载→

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