TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 深度专题

  • Bigtop 方法论

    • Bigtop 深度专题
    • 方法论

    • 组件编译技巧

    • 打包技巧-DEB

    • 打包技巧-RPM

      • RPM 包日常操作与解包实战
      • PparentDir参数解读
      • 实战-日志与源码解读

      • 其他技巧

    • 自定义集成

    • Ambari Server 与 Web

    • Ambari Metrics

    • Ambari Plus 思考

    • Redis集成实战

    • 通用代码模板

    • 各组件代码

    • 技术专题
    • Bigtop 方法论
    • 打包技巧-RPM
    JaneTTR
    2025-06-30
    目录
    一、代码层面的参数传递
    1. 代码实现逻辑
    2. 代码片段拆解
    二、为什么要用 parentDir?
    三、HDP/Bigtop 与 Ambari stack_root 设计
    1. Ambari/Bigtop stack_root 配置示意
    2. 目录结构规范
    四、parentDir 实际效果与运维收益

    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} → 指向当前激活版本的软链接
    #Bigtop#源码解析#Ambari#Redis#Stack集成
    RPM 包日常操作与解包实战
    Step0-打包完整链路

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

    最近更新
    01
    当前版本 2026/08
    08-29
    02
    把 Ambari Server HA 稳稳地跑起来
    08-17
    03
    从一次启用操作追到主备就绪
    08-17
    更多文章>
    Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式