Ambari编译——教程大纲2.8.0
# 环境准备与依赖梳理
提示
本文汇总了 Ambari 2.8.0 在 Rocky Linux 8.10 源码编译的完整流程与典型故障排查方法,从零基础环境配置到 rpm 产物校验,涵盖 Node.js、Maven、Python 等多语言集成“卡点”,为大数据平台运维与二次开发落地提供实战参考。
# 背景说明
随着 CentOS 停服,Rocky Linux 8.10 成为企业大数据平台迁移和新部署的主流选择。但 Ambari 2.8.0 的编译链路高度依赖于操作系统包和多版本依赖(如 JDK、Maven、Node.js、Python),在新环境下,依赖适配、rpm 打包策略、前端构建流程等环节都会暴露一系列新老问题。 本大纲将重点梳理 Rocky 8.10 下实际遇到的环境差异与踩坑点,帮助你直观规避。
笔记
Rocky Linux 8.10 在部分工具链(如 Python 默认指向 python3、rpm-build 规则收紧、EPEL 源兼容性)与 CentOS 有细微区别,务必结合文档逐步排查和调整。
# 环境准备与依赖梳理
请务必完成环境准备章节的所有依赖包安装及环境变量配置,否则后续流程很难顺利通过。
# 1. 常见全量编译命令
正常情况下,直接执行如下 Maven 命令即可:
mvn -T 2C -B install package rpm:rpm \
-Drat.skip=true \
-Dcheckstyle.skip=true \
-DskipTests \
-Dpython.ver="python >= 2.6" \
-Preplaceurl
2
3
4
5
6
-T 2C
多线程加速建议按实际 CPU 数量调整,充分发挥硬件性能- 省略测试、跳过 style 检查,极大提高编译速度和稳定性
# 2. 编译前代码微调——Node.js镜像与脚本
Ambari 前端构建阶段容易卡在 node-sass、fsevents 等依赖,这些依赖国内访问极易失败。
强烈建议在 ambari-admin/pom.xml
里 npm install
命令后面追加:
--registry=https://registry.npmmirror.com --ignore-scripts
实际修改建议(xml节点参考):
<arguments>install --registry=https://registry.npmmirror.com --ignore-scripts</arguments>
2
提示
--ignore-scripts
能跳过 postinstall 这类容易崩溃的 node 脚本,国内网络建议全局设 npm 镜像源提升构建成功率。
# 3. Yarn包EOF报错的彻底解决
如遇 Yarn 解包时报 EOFException,99% 与包缓存损坏或镜像源质量有关。 解决方案请移步专文:
# 4. Python版本适配与虚拟环境隔离
Rocky Linux 8.10 默认 python3,但 Ambari 部分组件对 python2 有硬性要求。 推荐不要直接软链全局 python,而是用虚拟环境一键切换和隔离。 详细教程见:使用虚拟环境
注意
python 环境混用最易导致脚本兼容性问题,生产/测试环境都推荐用 venv/miniconda 方式隔离运行时。
# 5. Rocky 特有的 rpm 策略放宽与兼容方案
# 5.1 忽略 shebang 检查
警告
如果不想看报错,直接想知道怎么改请戳我查看
Rocky 8.10 的 rpm 构建环节对 shebang 校验极为严格,部分脚本头部格式与新 rpm-build 规则冲突, 需在打包 spec 文件中适配 shebang 忽略参数。
# 5.2 agent/server 子模块构建报错应对
Ambari 的 agent/server 模块经常受 rpm 环境变量或脚本权限影响导致报错。典型报错及最佳实践见:最佳实践
# 6. 编译结果校验与 rpm 产物清单
上述都执行了基本就可以得到下面的结果了
编译结束后,建议如下批量校验 rpm 产物:
find . -iname *.rpm | while read pkg; do rpm -qpi "$pkg"; done
实际产物如下:
路径 | 说明 |
---|---|
./ambari-server-spi/target/rpm/ambari-server-spi/RPMS/noarch/ambari-server-spi-2.8.0.0-0.noarch.rpm | server接口 |
./ambari-admin/target/rpm/ambari-admin/RPMS/noarch/ambari-admin-2.8.0.0-0.noarch.rpm | admin模块 |
./ambari-funtest/target/rpm/ambari-funtest/RPMS/noarch/ambari-funtest-2.8.0.0-0.noarch.rpm | 测试用例 |
./ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-2.8.0.0-0.x86_64.rpm | agent服务 |
./ambari-web/target/rpm/ambari-web/RPMS/noarch/ambari-web-2.8.0.0-0.noarch.rpm | 前端资源 |
./ambari-project/target/rpm/ambari-project/RPMS/noarch/ambari-project-2.8.0.0-0.noarch.rpm | 通用项目 |
./target/rpm/ambari/RPMS/noarch/ambari-2.8.0.0-0.noarch.rpm | 集成主包 |
./ambari-server/target/rpm/ambari-server/RPMS/x86_64/ambari-server-2.8.0.0-0.x86_64.rpm | server服务 |
./ambari-views/target/rpm/ambari-views/RPMS/noarch/ambari-views-2.8.0.0-0.noarch.rpm | 视图库 |