bigtop-select多系统编译改造
# 1. 背景与版本差异
在大数据平台 rpm/脚本分发环境下,经常遇到“同一个工具、不同 Python 版本 shebang”的问题,尤其体现在 bigtop-select 这种集成脚本上。
Bigtop 3.2 及旧版本,distro-select 默认 shebang 为:
#!/usr/bin/env python2
1Bigtop 3.4 及更新版已切换到:
#!/usr/bin/env python3
1
提示
CentOS 7/8、RHEL 7/8、Rocky、Ubuntu 等主流环境,默认 Python 版本高度不一致,系统升级后“脚本一堆 py2/py3 错误”屡见不鲜。
# 2. 兼容性痛点分析
# 常见三类问题
问题场景 | 具体表现 | 典型环境 |
---|---|---|
python2/3 不同 shebang | 脚本执行直接报错 | 混部、升级、迁移集群 |
全局软链切换引发二次崩溃 | 系统依赖被新软链破坏 | 多套业务同服 |
ambari/bigtop 共存多脚本 | 运维脚本难以一致调度 | 大集群、混合管理平台 |
# 3. 通用方案对比
# 方案一:强行全局软链
ln -sf /usr/bin/python3 /usr/bin/python
1
- 能临时解决部分脚本兼容
- **缺点:**易影响系统依赖,带来隐藏风险,不推荐
# 方案二:shebang 统一为 /usr/bin/env python
- 理论可行,但受全局软链影响大,升级后极易出坑
# 方案三:【推荐】用 ambari-python-wrap
#!/usr/bin/env ambari-python-wrap
1
- 只要有 Ambari 的机器必有该工具
- 内部自动判断 py2/py3,跨版本无感知
- 避免全局软链,不影响系统本地依赖
- 集群脚本一行修改,全局解决
提示
ambari-python-wrap 属于业界工程实践最佳方案,大数据场景推荐优先采用。
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16