[B]Hadoop版本适配改造(一)1.0.0+
# 适配背景
在 Bigtop 体系下编译 Hadoop 及相关组件生成 RPM 包时,常常会遇到前端依赖网络拉取慢、依赖源不可达,以及 python 版本不兼容(尤其是 EL7 环境缺失 python3)等典型问题。为实现稳定、快速、一致的本地/离线构建,本次对编译脚本做了多处适配改造。
# 改造核心流程与配置
# 1. 编译脚本关键步骤对比
原始大致流程:
# Build artifacts
mvn $BUNDLE_SNAPPY -Pdist -Pnative -Psrc -Pyarn-ui -Dtar ${MAVEN_OPTS} install ${EXTRA_GOALS} "$@"
mvn site site:stage ${MAVEN_OPTS} $@
1
2
3
2
3
适配后关键增强:
# 解压 yarn-ui 前端离线依赖,彻底规避网络问题
tar -zxvf ../../SOURCES/yarn-ui-bower.tar.gz -C ./hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp
# 清理 yarn.lock,确保采用指定 npm 镜像源
rm -rf ./hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/yarn.lock
# 构建主流程,开启 Maven debug
mvn -X $BUNDLE_SNAPPY -Pdist -Pnative -Psrc -Pyarn-ui -Dtar ${MAVEN_OPTS} install ${EXTRA_GOALS} "$@"
# 进入 python3 虚拟环境,兼容 EL7 系统要求
source /opt/modules/virtual_env/hadoop_py37/bin/activate
python --version
mvn -X site site:stage ${MAVEN_OPTS} "$@"
deactivate
python --version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 2. 分步说明与实践要点
# 前端依赖离线包提前解压
提示
通过预先下载并解压 yarn-ui-bower.tar.gz
,将所有前端包直接放到 webapp 目录,有效避免 npm/bower
依赖拉取失败,提升构建成功率,适合所有内网/离线场景。
# yarn.lock 清理保障镜像源有效
删除 yarn.lock 文件可以防止前端依赖被历史锁定,确保 npm/yarn 拉取时能正确走企业内镜像、阿里云源等,解决偶发依赖装包失败问题。
# python3 虚拟环境包裹 site 阶段
警告
EL7 默认无 python3,部分 Hadoop 构建环节必须 python3 环境。使用 python 虚拟环境(如 /opt/modules/virtual_env/hadoop_py37
),临时激活后再执行 site 任务,避免因环境不符导致的脚本异常。
# 3. 典型适配流程表
步骤 | 目的/作用 | 建议操作 |
---|---|---|
前端依赖离线化 | 构建不依赖外网,确保包齐全 | 解压 yarn-ui-bower.tar.gz |
清理 yarn.lock | 保证依赖可根据新源/新版本刷新 | 构建前 rm -rf yarn.lock |
python3 虚拟环境 | EL7 系统兼容 python3 脚本运行 | activate/deactivate 包裹 site |