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.bom

    • Bigtop 中组件代码管理解读
      • 1. 背景说明
      • 2. 整体结构一览
      • 3. 镜像源配置与版本定义
      • 4. 组件定义:以 Hadoop 为例
        • 可选字段包括:
      • 5. Git 源代码组件定义(如 Ranger)
      • 6. 依赖管理机制
      • 7. 编译全流程串联图(逻辑)
    • Bigtop 添加新的组件
  • Hadoop编译

  • Flink编译

  • Spark编译

  • Atlas编译

  • Superset编译

  • Zookeeper编译

  • Hbase编译

  • Hive编译

  • Kafka编译

  • Solr编译

  • Tez编译

  • Zeppelin编译

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

Bigtop 中组件代码管理解读

# 1. 背景说明

在 Apache Bigtop 项目中,组件的源码获取、版本管理、构建打包顺序,都依赖一个中心配置文件:bigtop.bom。

这个文件使用了一种类似 Groovy 的 DSL(领域特定语言)结构,定义了所有参与构建的组件信息、依赖关系、tar 包地址、以及源码来源等,是整个打包体系的入口和“总调度表”。

提示

该文件不仅用于描述组件信息,还能通过解析器驱动自动下载源码、处理依赖顺序、注入构建参数等一系列操作。

# 2. 整体结构一览

bigtop.bom 的结构分为以下几个核心段落:

区块名 作用说明
bigtop 顶层作用域,包含版本定义、镜像源等全局配置
stack 定义编译环境中 JDK、Scala 等语言依赖
apache 设置 Apache 镜像与归档源
components 所有被管理的组件(如 Hadoop、HBase、Kafka 等)
dependencies 定义组件之间的编译依赖关系

# 3. 镜像源配置与版本定义

bigtop {
  base_version = "3.2.0"
  version = base_version + "-SNAPSHOT"

  apache {
    APACHE_MIRROR = "https://mirrors.huaweicloud.com/apache"
    APACHE_ARCHIVE = "https://mirrors.huaweicloud.com/apache"
  }
1
2
3
4
5
6
7
8
  • base_version 用于统一控制整个大版本
  • gh_proxy 则用于代理 GitHub 下载(如 Alluxio、Phoenix 等不在 ASF 镜像的组件)
  • APACHE_MIRROR 与 ARCHIVE 控制源码下载源地址
一处定义,全局引用

# 4. 组件定义:以 Hadoop 为例

每个组件都有独立定义块,用于说明名称、版本、下载链接及打包策略:

'hadoop' {
  name = 'hadoop'
  version { base = '3.3.4'; pkg = base; release = 1 }
  tarball {
    destination = "${name}-${version.base}.tar.gz"
    source = "${name}-${version.base}-src.tar.gz"
  }
  url {
    download_path = "/$name/common/$name-${version.base}"
    site = "${apache.APACHE_MIRROR}/${download_path}"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 可选字段包括:

  • rpm_pkg_suffix: 控制打包后 RPM 的版本后缀
  • relNotes: 组件描述说明
  • packaging: 指定仅支持 rpm 或 deb(如 bigtop-select)

# 5. Git 源代码组件定义(如 Ranger)

对于托管在 GitHub 上的组件,则使用 git 块描述:

'ranger' {
  version { base = '2.4.0' }
  tarball {
    source = "release-${version.base}.tar.gz"
    destination = "ranger-${version.base}.tar.gz"
  }
  url {
    site = bigtop.gh_proxy + "https://github.com/apache/ranger/archive/refs/tags"
  }
}
1
2
3
4
5
6
7
8
9
10

如果使用 Git repo,还可以指定:

git {
  repo = "https://github.com/apache/ranger.git"
  ref = "release-2.4.0"
  dir = "${name}-${version.base}-src"
}
1
2
3
4
5

# 6. 依赖管理机制

dependencies = [
  'bigtop-utils' : ['ambari', 'flink', 'zookeeper'],
  'hadoop'       : ['hbase', 'hive', 'spark'],
  'hbase'        : ['phoenix'],
  'spark'        : ['zeppelin']
]
1
2
3
4
5
6

这部分告诉构建系统:在构建 hive 前必须先构建 hadoop,而构建 phoenix 也依赖 hbase 已完成。

递归编译调度 若使用 `-Dbuildwithdeps=true` 参数构建,系统将自动按依赖顺序进行编译。

# 7. 编译全流程串联图(逻辑)

bigtop.bom → gradle读取bom → 解析 components → 下载源码 → 构建依赖图 → 调用 build.gradle → 构建 RPM/DEB
1
#Bigtop#DSL配置#编译流程
Bigtop 多版本编译源码改造(二)
Bigtop 添加新的组件

← Bigtop 多版本编译源码改造(二) 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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式