commandScript详解[一]
# Ambari Command Execution 全链路 21+ 步详解
本节以“流程图 + 日志 + 数据结构”三位一体,串联 Ambari 命令派发从上层请求到 Agent 最终执行的全生命周期。* 每一张图都是一个流程节点,建议配合集群实际问题对照分析。*
# 1. 执行流程总览(全图汇总)
1/23
2/23
3/23
4/23
5/23
6/23
7/23
8/23
9/23
10/23
11/23
12/23
13/23
14/23
15/23
16/23
17/23
18/23
19/23
20/23
21/23
22/23
23/23
# 2. 日志与数据流分析示例
你前面补充的 CommandsEventListener.py
日志片段和格式化 JSON,就是这些流程中“实际落盘和调度”的数据模型,可结合每步流程定位下发脚本、命令参数、任务状态等细节。
提示
每张图建议配合当前运维场景分析,比如:
- UI/API触发 → Server分派 → Agent调度 → 脚本调用 → 状态回传
- 任务失败在哪一步、Agent超时重试是第几步等
CommandsEventListener.py:45 - ============Received message: {'clusters': {'2': {'commands': [{'commandParams': {'hooks_folder': 'stack-hooks', 'custom_command': 'RESTART', 'script': 'scripts/zookeeper_client.py', 'version': '3.2.0', 'command_timeout': '900', 'HAS_RESOURCE_FILTERS': 'true', 'script_type': 'PYTHON'}, 'roleCommand': 'CUSTOM_COMMAND', 'repositoryFile': {'resolved': True, 'repoVersion': '3.2.0', 'repositories': [{'mirrorsList': None, 'tags': [], 'ambariManaged': True, 'baseUrl': 'http://192.168.3.46/modules', 'repoName': 'bigtop', 'components': None, 'distribution': None, 'repoId': 'BIGTOP-3.2.0-repo-1', 'applicableServices': []}], 'feature': {'preInstalled': False, 'scoped': True}, 'stackName': 'BIGTOP', 'repoVersionId': 1, 'repoFileName': 'ambari-bigtop-1'}, 'clusterId': '2', 'commandType': 'EXECUTION_COMMAND', 'clusterName': 'dev', 'serviceName': 'ZOOKEEPER', 'role': 'ZOOKEEPER_CLIENT', 'requestId': 72, 'taskId': 314, 'roleParams': {'component_category': 'CLIENT'}, 'componentVersionMap': {'HDFS': {'NAMENODE': '3.2.0', 'SECONDARY_NAMENODE': '3.2.0', 'DATANODE': '3.2.0', 'JOURNALNODE': '3.2.0', 'HDFS_CLIENT': '3.2.0'}, 'ZOOKEEPER': {'ZOOKEEPER_SERVER': '3.2.0', 'ZOOKEEPER_CLIENT': '3.2.0'}}, 'commandId': '72-0'}, {'commandParams': {'hooks_folder': 'stack-hooks', 'custom_command': 'RESTART', 'script': 'scripts/zookeeper_server.py', 'version': '3.2.0', 'command_timeout': '1200', 'HAS_RESOURCE_FILTERS': 'true', 'script_type': 'PYTHON'}, 'roleCommand': 'CUSTOM_COMMAND', 'repositoryFile': {'resolved': True, 'repoVersion': '3.2.0', 'repositories': [{'mirrorsList': None, 'tags': [], 'ambariManaged': True, 'baseUrl': 'http://192.168.3.46/modules', 'repoName': 'bigtop', 'components': None, 'distribution': None, 'repoId': 'BIGTOP-3.2.0-repo-1', 'applicableServices': []}], 'feature': {'preInstalled': False, 'scoped': True}, 'stackName': 'BIGTOP', 'repoVersionId': 1, 'repoFileName': 'ambari-bigtop-1'}, 'clusterId': '2', 'commandType': 'EXECUTION_COMMAND', 'clusterName': 'dev', 'serviceName': 'ZOOKEEPER', 'role': 'ZOOKEEPER_SERVER', 'requestId': 72, 'taskId': 315, 'roleParams': {'component_category': 'MASTER'}, 'componentVersionMap': {'HDFS': {'NAMENODE': '3.2.0', 'SECONDARY_NAMENODE': '3.2.0', 'DATANODE': '3.2.0', 'JOURNALNODE': '3.2.0', 'HDFS_CLIENT': '3.2.0'}, 'ZOOKEEPER': {'ZOOKEEPER_SERVER': '3.2.0', 'ZOOKEEPER_CLIENT': '3.2.0'}}, 'commandId': '72-0'}]}}, 'requiredConfigTimestamp': 1725606947714}
1
格式化后的json
{
'clusters': {
'2': {
'commands': [
{
'commandParams': {
'hooks_folder': 'stack-hooks',
'custom_command': 'RESTART',
'script': 'scripts/zookeeper_client.py',
'version': '3.2.0',
'command_timeout': '900',
'HAS_RESOURCE_FILTERS': 'true',
'script_type': 'PYTHON'
},
'roleCommand': 'CUSTOM_COMMAND',
//省略了部分
'clusterId': '2',
'commandType': 'EXECUTION_COMMAND',
'clusterName': 'dev',
'serviceName': 'ZOOKEEPER',
'role': 'ZOOKEEPER_CLIENT',
'requestId': 72,
'taskId': 314,
'roleParams': {
'component_category': 'CLIENT'
},
'componentVersionMap': {
'HDFS': {
'NAMENODE': '3.2.0',
'SECONDARY_NAMENODE': '3.2.0',
'DATANODE': '3.2.0',
'JOURNALNODE': '3.2.0',
'HDFS_CLIENT': '3.2.0'
},
'ZOOKEEPER': {
'ZOOKEEPER_SERVER': '3.2.0',
'ZOOKEEPER_CLIENT': '3.2.0'
}
},
'commandId': '72-0'
},
{
'commandParams': {
'hooks_folder': 'stack-hooks',
'custom_command': 'RESTART',
'script': 'scripts/zookeeper_server.py',
'version': '3.2.0',
'command_timeout': '1200',
'HAS_RESOURCE_FILTERS': 'true',
'script_type': 'PYTHON'
},
'roleCommand': 'CUSTOM_COMMAND',
'repositoryFile': {
'resolved': True,
'repoVersion': '3.2.0',
'repositories': [
{
'mirrorsList': None,
'tags': [],
'ambariManaged': True,
'baseUrl': 'http://192.168.3.46/modules',
'repoName': 'bigtop',
'components': None,
'distribution': None,
'repoId': 'BIGTOP-3.2.0-repo-1',
'applicableServices': []
}
],
'feature': {
'preInstalled': False,
'scoped': True
},
'stackName': 'BIGTOP',
'repoVersionId': 1,
'repoFileName': 'ambari-bigtop-1'
},
'clusterId': '2',
'commandType': 'EXECUTION_COMMAND',
'clusterName': 'dev',
'serviceName': 'ZOOKEEPER',
'role': 'ZOOKEEPER_SERVER',
'requestId': 72,
'taskId': 315,
'roleParams': {
'component_category': 'MASTER'
},
'componentVersionMap': {
'HDFS': {
'NAMENODE': '3.2.0',
'SECONDARY_NAMENODE': '3.2.0',
'DATANODE': '3.2.0',
'JOURNALNODE': '3.2.0',
'HDFS_CLIENT': '3.2.0'
},
'ZOOKEEPER': {
'ZOOKEEPER_SERVER': '3.2.0',
'ZOOKEEPER_CLIENT': '3.2.0'
}
},
'commandId': '72-0'
}
]
}
},
'requiredConfigTimestamp': 1725606947714
}
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106