Step18-衔接-打通Ambari与Bigtop
# 1. 操作步骤:如何打通 Ambari 与 Bigtop
# 1.1 首先,修改 stack_packages.json
路径示例:
ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/stack_packages.json
1
在这个文件中新增 Redis 相关的包名映射,以适配 Bigtop 输出的包和角色。例如:
{
"BIGTOP": {
"stack-select": {
"REDIS": {
"REDIS_MASTER": {
"STACK-SELECT-PACKAGE": "redis-master",
"INSTALL": [
"redis-master",
"redis-client"
],
"PATCH": [
"redis-master"
],
"STANDARD": [
"redis-master",
"redis-client"
]
},
"REDIS_SLAVE": {
"STACK-SELECT-PACKAGE": "redis-slave",
"INSTALL": [
"redis-slave",
"redis-client"
],
"PATCH": [
"redis-slave"
],
"STANDARD": [
"redis-slave",
"redis-client"
]
},
"REDIS_CLIENT": {
"STACK-SELECT-PACKAGE": "redis-client",
"INSTALL": [
"redis-client"
],
"PATCH": [
"redis-client"
],
"STANDARD": [
"redis-client"
]
}
}
},
"conf-select": {
"redis": [
{
"conf_dir": "/etc/redis/client/conf",
"current_dir": "{0}/current/redis-client/conf",
"component": "redis-client"
}
]
},
"conf-select-patching": {
"REDIS": {
"packages": [
"redis-client",
"redis-master",
"redis-slave"
]
}
}
}
}
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
- 这里,每个角色的包名必须与 Bigtop 编译出来的 RPM/DEB 包完全一致。
redis-master
、redis-slave
、redis-client
都是 bigtop-package 产物,不要自创别名,否则无法正确下发。
# 1.2 其次,distro-select 里做对应适配
distro-select 机制会根据 stack_packages.json 里的包名,去系统实际查找并切换软链。例如:
leaves = {
'redis-master': 'redis',
'redis-slave': 'redis',
'redis-client': 'redis'
}
1
2
3
4
5
2
3
4
5
- 这里也必须写和上一步完全一致的包名。否则 stack-select/distro-select 执行软链切换时会找不到包,导致服务启动失败或升级异常。
# 1.3 核心原则:包名与角色严格一致,遵循统一规范
- 不管是 stack_packages.json、distro-select 代码、还是 stack-select 的 JSON 配置,都要完全一致。
- 所有包名、组件名一旦对齐,Ambari 就能通过 stack-select/distro-select 机制自动发现和切换相应角色包,无需人工干预。
# 2. 为什么要保持一致?
- 遵循 Bigtop 标准输出:Bigtop 输出什么包名(如 redis-master),就必须全链路贯穿。Ambari 自动化脚本、UI 下发、stack-select 切换都直接调用。
- 批量切换、补丁升级保障:一致的包名保证多节点分发、补丁热切换、灰度升级都能批量安全完成。
- 简化自动化脚本和工具链:全链路一致性大大降低开发和运维难度,不用在多套配置里做名词转换。
# 3. 图示解读配置流转
# 3.1 Ambari 配置与包名对齐
- 图中可见,所有角色(Master/Slave/Client)都绑定了唯一的包名映射,贯穿打包、部署、运维链路。
# 3.2 distro-select 工作机制
- Ambari、Bigtop、distro-select 统一包名映射后,实现了软链自动切换、版本平滑升级、按需组件切换。
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16