[O]Hadoop版本适配改造(三)1.0.0+
# 背景说明
Hadoop UI 在前端编译阶段,历史上采用 bower 直接联网拉取依赖。然而实际在国内或内网环境下,网络抖动、GitHub 访问不畅等问题频繁导致依赖包下载失败,严重影响编译效率和稳定性。
# 主要改造点
路径/文件位置 | 主要变更点 | 说明 |
---|---|---|
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/bower.json | 依赖本地化 | 所有 dependencies 全部指向本地 bower_components 目录 |
本地资源准备 | 离线包统一下载 | 配套给出全部依赖 tar 包,支持一键解压复用 |
# 1. bower.json 依赖本地化处理
原有 bower.json 的 dependencies 会直接从远程仓库拉取,如下图所示:
注意
该模式下每次构建均依赖外网,遇到网络不佳、代理失效时,前端依赖经常拉取失败,CI/CD、离线部署极不友好。
为此,我们将所有依赖全部本地化,示例结构如下:
{
"name": "yarn-ui",
"dependencies": {
"ember": "./bower_components/ember",
"ember-cli-shims": "./bower_components/ember-cli-shims",
"ember-cli-test-loader": "./bower_components/ember-cli-test-loader",
"ember-data": "./bower_components/ember-data",
"ember-load-initializers": "./bower_components/ember-load-initializers",
"ember-qunit": "./bower_components/ember-qunit",
"ember-qunit-notifications": "./bower_components/ember-qunit-notifications",
"jquery": "./bower_components/jquery",
"loader.js": "./bower_components/loader.js",
"qunit": "./bower_components/qunit",
"jquery-ui": "./bower_components/jquery-ui",
"moment": "./bower_components/moment",
"moment-timezone": "./bower_components/moment-timezone",
"more-js": "./bower_components/more-js",
"bootstrap": "./bower_components/bootstrap",
"d3": "./bower_components/d3",
"datatables": "./bower_components/datatables",
"spin.js": "./bower_components/spin.js",
"momentjs": "./bower_components/momentjs",
"select2": "./bower_components/select2",
"snippet-ss": "./bower_components/snippet-ss",
"alasql": "./bower_components/alasql",
"x2js": "./bower_components/x2js",
"qunit-notifications": "./bower_components/qunit-notifications"
},
"resolutions": {
"jquery": "1.9.1 - 3",
"moment": ">= 2.6.0"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
此配置下,bower 仅查找本地 bower_components
目录,彻底避免外网拉取失败风险。
# 2. 离线依赖包下载与使用指引
为快速完成本地化依赖准备,可直接下载官方整理的离线包(所有 bower 依赖打包归档):
下载后,直接解压到 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp
目录下:
解压完成后目录结构如下:
hadoop-yarn-ui/
└── src/
└── main/
└── webapp/
├── bower_components/
└── bower.json
1
2
3
4
5
6
2
3
4
5
6