采用RPM或DEB安装解读
大数据平台的集成和运维,为什么不直接用 tar.gz、手工部署,反而业界主流都选择 rpm/deb 这种包管理体系?尤其在 Ambari、Bigtop 这样的集成场景下,rpm/deb 方式几乎成为“最佳实践”。本文从实际工程和系统治理的角度,梳理这种方式的优势,并给出标准化运维的落地建议。
# 一、什么是 rpm/deb 包管理体系
包管理工具 | 适用系统 | 常用命令 | 描述 |
---|---|---|---|
rpm/yum | CentOS/RedHat | rpm, yum | 以 .rpm 为核心的二进制包管理工具,依赖树分析、生命周期管理 |
dpkg/apt | Debian/Ubuntu | dpkg, apt | 以 .deb 为核心的包管理工具,强依赖管理、自动升级与卸载 |
# 二、为何大数据平台要采用 rpm/deb 进行集成?
# 1. 严格的依赖管理和冲突检测
- 支持 Requires/Provides/Conflicts 依赖声明,防止同一目录被多个组件污染。
- 可以强制要求先装依赖(如 JDK、Hadoop),后装上层组件。
- 系统级冲突/重复文件检测,极大降低“环境脏乱”风险。
# 2. 规范的生命周期管理
- 支持 install、upgrade、uninstall 钩子自动化处理。
- 支持 post/pre 脚本,例如:注册系统服务、生成配置、授权目录等。
- 支持无残留卸载,清理干净。
# 3. 版本可控、升级降级有保障
- 明确的版本号(如 redis_3_2_0-7.4.0-1.el8.x86_64.rpm),升级路径可控。
- 支持 rollback,升级失败可回退。
- 支持自动化批量升级(配合 yum/apt 仓库源)。
# 4. 跨主机、跨环境一致性保障
- 一次构建、多地分发,只需管理本地仓库源。
- 自动解决依赖,主机批量部署极简。
- 运维操作全自动化,可配合 Ansible/Salt/Puppet 等工具。
# 三、与传统 tar.gz 解压方式的对比
特性 | rpm/deb | tar.gz 手工解压 |
---|---|---|
依赖管理 | 强依赖自动解决 | 需手动下载/配置 |
冲突检测 | 支持自动检测 | 无法检测 |
升级/回滚 | 一键处理 | 手工备份恢复,风险大 |
主机一致性 | 100%一致,运维友好 | 易出错,环境不可控 |
钩子/脚本支持 | 安装/卸载自动处理 | 需写额外脚本,易遗漏 |
# 四、工程落地实践举例
# Ambari/Bigtop 集成组件典型流程
# 以 Bigtop 为例,编译产出 rpm 包
gradle redis-rpm -PparentDir=/usr/bigtop -Dbuildwithdeps=true -PpkgSuffix
# 部署:上传到本地 yum 仓库,所有节点自动拉取
yum install redis_3_2_0-7.4.0-1.el8.x86_64.rpm
# 升级、卸载同理
yum update redis
yum remove redis
1
2
3
4
5
6
7
2
3
4
5
6
7
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16