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)
  • Bigtop通用部分

    • Step0-源码获取
    • Step1-构建规范的bom
    • Step2-Redis源代码编译
    • Step3-源代码编译脚本构造
    • Step4-buildroot处理
    • Step6-Log-编译细节
      • Step7-Log-安装细节
      • Step8-Log-制品细节
      • Step9-版本适配器
    • Bigtop打包部分

    • Ambari部分

    • J-Redis集成-F
    • Bigtop通用部分
    JaneTTR
    2025-06-24
    目录

    Step6-Log-编译细节

    我们的编译命令是:

    gradle redis-rpm -PparentDir=/usr/bigtop -Dbuildwithdeps=true -PpkgSuffix
    
    1

    本节通过实际日志片段,详细还原和分析 Redis 在大数据集成环境下的编译链路与参数流转过程。

    # 日志片段与流程梳理

    提示

    日志是理解复杂自动化编译流程最直接的“真相还原器”。本节建议对照自己的实际 build 输出一起看,效果更佳。

    # 1. 解压源码、准备编译环境

    + cd /opt/modules/bigtop/build/redis/rpm//BUILD
    + cd /opt/modules/bigtop/build/redis/rpm/BUILD
    + rm -rf redis-7.4.0
    + /usr/bin/gzip -dc /opt/modules/bigtop/build/redis/rpm/SOURCES/7.4.0.tar.gz
    + /usr/bin/tar -xvvof -
    
    1
    2
    3
    4
    5
    • 进入 BUILD 目录,所有构建产物和中间文件都会落在这里。
    • 先清理旧的 redis-7.4.0 源码目录,保证每次都是全新环境,防止遗留文件影响结果。
    • 解压 tar.gz 源码包,展开所有原始文件。

    笔记

    很多初学者以为解压只是“解包”,但这一步其实是标准化构建入口,为所有后续动作打好目录和权限基础。

    # 2. 权限处理

    + cd redis-7.4.0
    + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
    
    1
    2
    • 统一源码目录权限,适配各种用户和 CI 场景,避免后续因为权限问题导致构建中断。
    • 这一点在多用户/自动化流水线环境下尤其重要。

    提示

    大数据 CI/CD 场景中经常因为权限导致莫名报错,强烈建议在 build 步骤加入这类强制修正。

    # 3. 进入 build 阶段,脚本触发

    + env COMPONENT_VERSION=7.4.0 bash /opt/modules/bigtop/build/redis/rpm/SOURCES/do-component-build
    
    1
    • 这里通过环境变量方式传递 Redis 的版本号。
    • 触发核心脚本 do-component-build,实际控制整个源码的编译、依赖注入等后续环节。

    笔记

    Bigtop 的核心理念之一就是一切以参数驱动,版本传递、依赖切换都靠环境变量串起来,便于后续集成和运维自动化。

    image-20250625095737103

    • 上图即为 %build 阶段的典型触发界面,说明变量和脚本已经在真实构建流程中联动起来。

    # 4. 依赖变量注入机制

    ++ dirname /opt/modules/bigtop/build/redis/rpm/SOURCES/do-component-build
    + . /opt/modules/bigtop/build/redis/rpm/SOURCES/bigtop.bom
    ++ ZOOKEEPER_VERSION=3.5.9
    ++ HADOOP_VERSION=3.3.4
    ++ HBASE_VERSION=2.4.13
    ++ HIVE_VERSION=3.1.3
    ++ TEZ_VERSION=0.10.1
    ++ OOZIE_VERSION=5.2.1
    ++ SOLR_VERSION=8.11.2
    ++ SPARK_VERSION=3.5.5
    ++ FLINK_VERSION=1.17.2
    ++ PHOENIX_VERSION=5.1.2
    ++ BIGTOP_GROOVY_VERSION=2.5.4
    ++ BIGTOP_UTILS_VERSION=3.2.0-SNAPSHOT
    ++ BIGTOP_SELECT_VERSION=3.2.0-SNAPSHOT
    ++ BIGTOP_JSVC_VERSION=1.2.4
    ++ ALLUXIO_VERSION=2.8.0
    ++ KAFKA_VERSION=2.8.1
    ++ YCSB_VERSION=0.17.0
    ++ ZEPPELIN_VERSION=0.10.1
    ++ GPDB_VERSION=5.28.5
    ++ AMBARI_VERSION=2.7.5
    ++ BIGTOP_AMBARI_MPACK_VERSION=2.7.5
    ++ LIVY_VERSION=0.7.1
    ++ RANGER_VERSION=2.4.0
    ++ SQOOP_VERSION=1.4.7
    ++ REDIS_VERSION=7.4.0
    ++ DOLPHINSCHEDULER_VERSION=3.2.2
    ++ DORIS_VERSION=2.1.7
    ++ NIGHTINGALE_VERSION=7.7.2
    ++ CATEGRAF_VERSION=0.4.1
    ++ VICTORIAMETRICS_VERSION=1.109.1
    ++ CLOUDBEAVER_VERSION=25.1.0
    ++ CELEBORN_VERSION=0.5.3
    ++ OZONE_VERSION=1.4.1
    ++ IMPALA_VERSION=4.4.1
    ++ TRINO_VERSION=474
    ++ HUDI_VERSION=1.0.1
    ++ PAIMON_VERSION=1.1.0
    ++ ATLAS_VERSION=2.4.0
    ++ SUPERSET_VERSION=4.1.2
    ++ JDK_VERSION=1.8
    ++ SCALA_VERSION=2.12.13
    + make
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    • bigtop.bom 文件通过 source 方式被全部注入当前 Shell 环境。
    • 日志里 ++ XXX_VERSION=... 的部分就是每个大数据组件的实际版本号,后续无论 Redis 是否依赖其他组件,变量都已经自动传递到了脚本上下文中。
    • 这种方式支持大数据生态下的多组件版本联动和动态适配,不需要任何硬编码。

    提示

    要做版本统一升级、适配,直接维护 bigtop.bom 即可,不需要挨个脚本里搜版本号,省心且不易错。

    # 5. 正式开始 make 源码编译

    + make
    cd src && make all
    make[1]: Entering directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/src'
        CC Makefile.dep EXECUTING [13s]
    rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep *.so
    rm -f threads_mngr.d adlist.d quicklist.d ae.d anet.d dict.d ebuckets.d mstr.d kvstore.d server.d sds.d zmalloc.d lzf_c.d lzf_d.d pqsort.d zipmap.d sha1.d ziplist.d release.
    d networking.d util.d object.d db.d replication.d rdb.d t_string.d t_list.d t_set.d t_zset.d t_hash.d config.d aof.d pubsub.d multi.d debug.d sort.d intset.d syncio.d cluste
    r.d cluster_legacy.d crc16.d endianconv.d slowlog.d eval.d bio.d rio.d rand.d memtest.d syscheck.d crcspeed.d crc64.d bitops.d sentinel.d notify.d setproctitle.d blocked.d h
    yperloglog.d latency.d sparkline.d redis-check-rdb.d redis-check-aof.d geo.d lazyfree.d module.d evict.d expire.d geohash.d geohash_helper.d childinfo.d defrag.d siphash.d r
    ax.d t_stream.d listpack.d localtime.d lolwut.d lolwut5.d lolwut6.d acl.d tracking.d socket.d tls.d sha256.d timeout.d setcpuaffinity.d monotonic.d mt19937-64.d resp_parser.
    d call_reply.d script_lua.d script.d functions.d function_lua.d commands.d strl.d connection.d unix.d logreqres.d anet.d adlist.d dict.d redis-cli.d zmalloc.d release.d ae.d
     redisassert.d crcspeed.d crc64.d siphash.d crc16.d monotonic.d cli_common.d mt19937-64.d strl.d cli_commands.d ae.d anet.d redis-benchmark.d adlist.d dict.d zmalloc.d redis
    assert.d release.d crcspeed.d crc64.d siphash.d crc16.d monotonic.d cli_common.d mt19937-64.d strl.d
    (cd ../deps && make distclean)
    make[2]: Entering directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/deps'
    (cd hiredis && make clean) > /dev/null || true
    (cd linenoise && make clean) > /dev/null || true
    (cd lua && make clean) > /dev/null || true
    (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
    (cd hdr_histogram && make clean) > /dev/null || true
    (cd fpconv && make clean) > /dev/null || true
    (rm -f .make-*)
    make[2]: Leaving directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/deps'
    (cd modules && make clean)
    make[2]: Entering directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/src/modules'
    rm -rf *.xo *.so
    make[2]: Leaving directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/src/modules'
    (cd ../tests/modules && make clean)
        CC call_reply.o
        CC script_lua.o
        CC script.o
        CC functions.o
        CC function_lua.oXECUTING [1m 24s]
        CC commands.o
        CC strl.o
        CC connection.o
        CC unix.o
        CC logreqres.o
        LINK redis-serverXECUTING [1m 24s]
        INSTALL redis-sentinelING [1m 47s]
        CC redis-cli.o
        CC redisassert.oEXECUTING [1m 48s]
        CC cli_common.o
        CC cli_commands.oXECUTING [1m 48s]
        LINK redis-cli% EXECUTING [1m 48s]
        CC redis-benchmark.oUTING [1m 52s]
        LINK redis-benchmarkUTING [1m 53s]
        INSTALL redis-check-rdbNG [1m 55s]
        INSTALL redis-check-aof
    
    Hint: It's a good idea to run 'make test' ;)
    
    make[1]: Leaving directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/src'
    + exit 0
    Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.tEwuJM
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    • 进入 Redis src 目录,执行 make all。
    • 这里会看到所有 Redis 主程序和工具链(如 redis-server、redis-cli、redis-sentinel 等)的构建输出。
    • 每个编译和链接动作在日志中均有迹可循。

    注意

    如果发现 make 阶段异常或产物不全,第一时间检查上一节的 buildroot 目录和变量注入是否正常。

    #Redis#bigtop#编译日志#自动化构建#版本注入
    Step4-buildroot处理
    Step7-Log-安装细节

    ← Step4-buildroot处理 Step7-Log-安装细节→

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