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

    • RPM 包日常操作与解包实战
    • PparentDir参数解读
    • 实战-日志&源码解读全链路周期

    • 其他技巧

    • GOD-Bigtop
    • 打包技巧-RPM
    JaneTTR
    2025-06-30
    目录

    PparentDir参数解读

    在 Bigtop、Ambari 等大数据分发和自动化集成场景下,组件的打包与目录归一化是标准化运维的基础。以如下常见构建命令为例:

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

    本章聚焦于 -PparentDir 参数背后的逻辑和作用。

    # 一、代码层面的参数传递

    # 1. 代码实现逻辑

    笔记

    parentDir 参数在 groovy 构建脚本中的具体传递和拼接逻辑如下图所示。

    image-20250703135804124

    • 通过 project.hasProperty("parentDir") 判断外部参数是否传入。
    • 若存在,则拼接 ${BIGTOP_BASE_VERSION} 形成最终的安装前缀。
    • 传递到 rpmbuild 时,影响 RPM 包的安装路径。

    # 2. 代码片段拆解

    def final PARENT_DIR = project.hasProperty("parentDir") ? project.property('parentDir') : "%{nil}"
    def FULL_PARENT_DIR = "${PARENT_DIR}"
    if (PARENT_DIR != "%{nil}") {
        FULL_PARENT_DIR = "${PARENT_DIR}/${BIGTOP_BASE_VERSION}"
    }
    
    1
    2
    3
    4
    5

    # 二、为什么要用 parentDir?

    目录统一的重要性

    如果所有组件默认分布在 /usr/lib、/usr/bin 等系统目录,后续排查、升级、迁移时会极其混乱。不同项目安装内容无法区分,极易污染系统环境,甚至和系统原生包发生冲突。

    最佳实践是让所有自定义大数据包安装在统一前缀下,比如 /usr/bigtop,类似于 Cloudera 的 /opt/cloudera、HDP 的 /usr/hdp。

    # 三、HDP/Bigtop 与 Ambari stack_root 设计

    # 1. Ambari/Bigtop stack_root 配置示意

    笔记

    如下图所示,Ambari 的 stack_root 明确指定了 bigtop 根目录,建议与实际编译参数保持一致,否则会带来一系列路径混乱问题。

    image-20250703144049971

    stack_root 配置位于 ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/configuration/cluster-env.xml

    # 2. 目录结构规范

    体系 目录举例 说明
    HDP /usr/hdp/3.1.0.0-78/hadoop 每个版本独立目录
    Bigtop /usr/bigtop/3.2.0/hadoop 组件全部归一化到 bigtop 根下
    Current /usr/bigtop/current/hadoop 指向实际版本的符号链接

    # 四、parentDir 实际效果与运维收益

    • 统一运维入口:后续查找/排查所有大数据包均在 /usr/bigtop 下,极易定位和批量管理。
    • 多版本共存:通过 version 层级,支持不同大版本间平滑切换,无需担心老旧产物遗留。
    • 升级/回滚友好:只需更新 current 软链即可实现无感升级或回滚。
    • 脚本兼容性强:组件脚本无需关注底层目录变动,只取 current 路径,减少硬编码。

    笔记

    • /usr/bigtop/{version}/{componentName} → 版本化产物目录
    • /usr/bigtop/current/{componentName} → 指向当前激活版本的软链接
    #Ambari#Redis#Stack集成#大数据运维
    RPM 包日常操作与解包实战
    Step0-打包完整链路

    ← RPM 包日常操作与解包实战 Step0-打包完整链路→

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