[toc]
# metainfo.xml 介绍
在Ambari自定义开发中,metainfo.xml
配置文件起着至关重要的作用。它用于定义服务的元数据信息,包括服务的版本、组件、执行脚本、适用操作系统以及服务间的依赖关系等。这些信息对于Ambari来说是必要的,因为它们帮助Ambari理解如何部署、管理和监控自定义服务。
# 配置说明
# Hbase metainfo.xml配置说明
<?xml version="1.0"?>
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<!--服务名称,在所有Ambari安装服务中保持唯一-->
<name>HBASE</name>
<!--在Ambari Web UI中显示的名称-->
<displayName>HBase</displayName>
<!--服务描述,在安装服务时候提示的说明-->
<comment>Non-relational distributed database and centralized service for configuration management &
synchronization
</comment>
<!--版本号,安装服务时name+version组合去重-->
<version>2.0.0.3.0</version>
<!--设置服务在初次部署集群时强制安装-->
<!--<selection>MANDATORY</selection>-->
<components>
<component>
<!--组件名称-->
<name>HBASE_MASTER</name>
<!--组件在页面显示名称-->
<displayName>HBase Master</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>MASTER</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>1+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>hbase</timelineAppid>
<!--组件依赖的 xml 文件,当在前端页面上修改 xml 文件内容后并保存配置,服务会提示重启,只有该组件将被重启。-->
<dependencies>
<dependency>
<name>HDFS/HDFS_CLIENT</name>
<scope>host</scope>
<auto-deploy>
<enabled>true</enabled>
</auto-deploy>
</dependency>
<dependency>
<name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
<scope>cluster</scope>
<auto-deploy>
<enabled>true</enabled>
<co-locate>HBASE/HBASE_MASTER</co-locate>
</auto-deploy>
</dependency>
</dependencies>
<!--标准命令,调用python脚本,用来执行该组件的某些操作-->
<commandScript>
<script>scripts/hbase_master.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
<logs>
<log>
<logId>hbase_master</logId>
<primary>true</primary>
</log>
</logs>
<!--标准命令之外自定义的命令-->
<customCommands>
<customCommand>
<!--自定义命令名称-->
<name>DECOMMISSION</name>
<!--实现自定义命令的脚本-->
<commandScript>
<!--脚本路径-->
<script>scripts/hbase_master.py</script>
<!--脚本类型,目前只支持python-->
<scriptType>PYTHON</scriptType>
<!--自定义命令超时时间-->
<timeout>600</timeout>
</commandScript>
</customCommand>
</customCommands>
</component>
<component>
<name>HBASE_REGIONSERVER</name>
<displayName>RegionServer</displayName>
<category>SLAVE</category>
<cardinality>1+</cardinality>
<versionAdvertised>true</versionAdvertised>
<decommissionAllowed>true</decommissionAllowed>
<timelineAppid>hbase</timelineAppid>
<commandScript>
<script>scripts/hbase_regionserver.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
<bulkCommands>
<displayName>RegionServers</displayName>
<!-- Used by decommission and recommission -->
<masterComponent>HBASE_MASTER</masterComponent>
</bulkCommands>
<logs>
<log>
<logId>hbase_regionserver</logId>
<primary>true</primary>
</log>
</logs>
</component>
<component>
<name>HBASE_CLIENT</name>
<displayName>HBase Client</displayName>
<category>CLIENT</category>
<cardinality>1+</cardinality>
<versionAdvertised>true</versionAdvertised>
<commandScript>
<script>scripts/hbase_client.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
<!--客户端配置可以下载的配置文件-->
<configFiles>
<configFile>
<!--下载文件类型, xml or env sh, yaml, etc-->
<type>xml</type>
<!--下载的文件文件名-->
<fileName>hbase-site.xml</fileName>
<!--包含配置属性的数据字典-->
<dictionaryName>hbase-site</dictionaryName>
</configFile>
<configFile>
<type>env</type>
<fileName>hbase-env.sh</fileName>
<dictionaryName>hbase-env</dictionaryName>
</configFile>
<configFile>
<type>xml</type>
<fileName>hbase-policy.xml</fileName>
<dictionaryName>hbase-policy</dictionaryName>
</configFile>
<configFile>
<type>env</type>
<fileName>log4j.properties</fileName>
<dictionaryName>hbase-log4j</dictionaryName>
</configFile>
</configFiles>
</component>
<component>
<name>PHOENIX_QUERY_SERVER</name>
<displayName>Phoenix Query Server</displayName>
<category>SLAVE</category>
<cardinality>0+</cardinality>
<versionAdvertised>true</versionAdvertised>
<commandScript>
<script>scripts/phoenix_queryserver.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
<logs>
<log>
<logId>hbase_phoenix_server</logId>
<primary>true</primary>
</log>
</logs>
</component>
</components>
<!--自定义命令脚本-->
<commandScript>
<script>scripts/service_check.py</script>
<scriptType>PYTHON</scriptType>
<timeout>300</timeout>
</commandScript>
<!--依赖服务,表示安装该服务前,必须要安装requiredServices下的所有服务-->
<requiredServices>
<service>ZOOKEEPER</service>
<service>HDFS</service>
</requiredServices>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.xml 文件。如果我们希望服务使用默认的 configuration 目录,则可以跳过它。-->
<!--<configuration-dir></configuration-dir>-->
<!--服务依赖的配置文件,当配置文件被修改时,该服务会提示需要重启,服务下所有组件重启后提示自动消除-->
<configuration-dependencies>
<!--服务依赖的配置文件名称。如果在前端页面上修改了该 xml 文件内容后并保存配置,服务会提示重启,整个服务都将被重启。-->
<config-type>core-site</config-type> <!-- hbase puts core-site in it's folder -->
<config-type>viewfs-mount-table</config-type>
<config-type>hbase-policy</config-type>
<config-type>hbase-site</config-type>
<config-type>hbase-env</config-type>
<config-type>hbase-log4j</config-type>
<config-type>ranger-hbase-plugin-properties</config-type>
<config-type>ranger-hbase-audit</config-type>
<config-type>ranger-hbase-policymgr-ssl</config-type>
<config-type>ranger-hbase-security</config-type>
<config-type>hbase-atlas-application-properties</config-type>
</configuration-dependencies>
<!--快捷链接,在WebUI中快速跳转的链接,通常为服务的管理监控页面,如Hbase Master UI-->
<quickLinksConfigurations>
<quickLinksConfiguration>
<!--默认值:quicklinks,可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 quicklinks 目录,则可以跳过它-->
<!--<quickLinksConfigurations-dir></quickLinksConfigurations-dir>-->
<!--json 文件,指定的 quickLink 文件名称-->
<fileName>quicklinks.json</fileName>
<!--一般为 true-->
<default>true</default>
</quickLinksConfiguration>
</quickLinksConfigurations>
<!--根据不同操作系统选择不同的安装包-->
<osSpecifics>
<osSpecific>
<!--rpm 包适用的操作系统-->
<osFamily>redhat7,amazonlinux2,redhat6,suse11,suse12</osFamily>
<packages>
<package>
<!--部署服务需要的包名,将执行 yum install xxx 命令-->
<name>hbase_${stack_version}</name>
</package>
<package>
<name>phoenix_${stack_version}</name>
<condition>should_install_phoenix</condition>
</package>
</packages>
</osSpecific>
<osSpecific>
<osFamily>debian7,debian9,ubuntu12,ubuntu14,ubuntu16,ubuntu18</osFamily>
<packages>
<package>
<name>hbase-${stack_version}</name>
</package>
<package>
<name>phoenix-${stack_version}</name>
<condition>should_install_phoenix</condition>
</package>
</packages>
</osSpecific>
</osSpecifics>
<!--设置主题配置-->
<themes>
<theme>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 themes 目录,则可以跳过它。-->
<!--<themes-dir></themes-dir>-->
<!--json 文件,指定的主题文件名称-->
<fileName>theme.json</fileName>
<!--一般为 true-->
<default>true</default>
</theme>
<theme>
<fileName>directories.json</fileName>
<default>true</default>
</theme>
</themes>
</service>
</services>
</metainfo>
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
自己编写的DORIS服务metainfo.xml
<?xml version="1.0"?>
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<!--服务名称,在所有Ambari安装服务中保持唯一-->
<name>DORIS</name>
<!--在Ambari Web UI中显示的名称-->
<displayName>Doris</displayName>
<!--服务描述,在安装服务时候提示的说明-->
<comment>Doris 2.0.5 版本服务安装</comment>
<!--版本号,安装服务时name+version组合去重-->
<version>2.0.5</version>
<!--设置服务在初次部署集群时强制安装-->
<!--<selection>MANDATORY</selection>-->
<configuration-dependencies>
<config-type>fe</config-type>
</configuration-dependencies>
<components>
<component>
<!--组件名称-->
<name>FRONTEND</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>MASTER</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>1</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
<customCommands>
<customCommand>
<name>node_check</name>
<background>true</background>
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
</customCommand>
<customCommand>
<name>add_backends</name>
<background>true</background>
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
</customCommand>
</customCommands>
</component>
<component>
<!--组件名称-->
<name>FRONTEND_OBSERVER</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend Observer</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>1+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/frontend_observer.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<!--组件名称-->
<name>FRONTEND_FOLLOWER</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend Follower</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>0+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/frontend_follower.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<!--组件名称,command-xxx.json中的backend_hosts字段命名就是这个取的字段-->
<name>BACKEND</name>
<!--组件在页面显示名称-->
<displayName>Doris Backend</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>0+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/be.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<name>DORIS_CLIENT</name>
<displayName>Doris Client</displayName>
<category>CLIENT</category>
<cardinality>1+</cardinality>
<versionAdvertised>true</versionAdvertised>
<commandScript>
<script>scripts/doris_client.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
<configFiles>
<configFile>
<type>properties</type>
<fileName>fe.conf</fileName>
<dictionaryName>fe</dictionaryName>
</configFile>
<configFile>
<type>properties</type>
<fileName>be.conf</fileName>
<dictionaryName>be</dictionaryName>
</configFile>
<configFile>
<type>properties</type>
<fileName>doris-env</fileName>
<dictionaryName>doris-env</dictionaryName>
</configFile>
</configFiles>
</component>
</components>
<commandScript>
<script>scripts/service_check.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1800</timeout>
</commandScript>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.xml 文件。如果我们希望服务使用默认的 configuration 目录,则可以跳过它。-->
<!--<configuration-dir></configuration-dir>-->
<!--快捷链接,在WebUI中快速跳转的链接,通常为服务的管理监控页面,如Hbase Master UI-->
<quickLinksConfigurations>
<quickLinksConfiguration>
<!--默认值:quicklinks,可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 quicklinks 目录,则可以跳过它-->
<!--<quickLinksConfigurations-dir></quickLinksConfigurations-dir>-->
<!--json 文件,指定的 quickLink 文件名称-->
<fileName>quicklinks.json</fileName>
<!--一般为 true-->
<default>true</default>
</quickLinksConfiguration>
</quickLinksConfigurations>
<!--根据不同操作系统选择不同的安装包-->
<osSpecifics>
<osSpecific>
<osFamily>any</osFamily>
</osSpecific>
</osSpecifics>
<!--设置主题配置-->
<themes>
<theme>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 themes 目录,则可以跳过它。-->
<!--<themes-dir></themes-dir>-->
<!--json 文件,指定的主题文件名称-->
<fileName>theme.json</fileName>
<!--一般为 true-->
<default>true</default>
</theme>
<theme>
<fileName>directories.json</fileName>
<default>true</default>
</theme>
</themes>
<requiredServices>
<service>ZOOKEEPER</service>
<service>HDFS</service>
<service>SPARK2</service>
</requiredServices>
</service>
</services>
</metainfo>
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# 配置参数详细介绍
tip: 这里层级是以<service>下的元素为一级,因为我们自定义开发都是基于<service>下进行开发的,如下面所示,<name>元素为一级
<?xml version="1.0"?> <metainfo> <schemaVersion>2.0</schemaVersion> <services> <service> <!--服务名称,在所有Ambari安装服务中保持唯一--> <name>DORIS</name> </service> </services> </metainfo>
1
2
3
4
5
6
7
8
9
10
层级 | 字段名称 | 是否为父元素(即无具体值,具体值在子元素中配置) | 描述 | 取值举例 | 取值范围 |
---|---|---|---|---|---|
一级 | name | 服务名称,在所有Ambari安装服务中保持唯一 | 无 | ||
一级 | displayName | 在Ambari Web UI中显示的名称 | 无 | ||
一级 | comment | 服务描述,在安装服务时候提示的说明 | 无 | ||
一级 | version | 版本号,安装服务时name+version组合去重 | 无 | ||
一级 | selection | MANDATORY:设置服务在初次部署集群时强制安装 | MANDATORY | ||
一级 | configuration-dependencies | 是 | 设置修改配置提示重启服务 | ||
二级 | config-type | 当修改该配置后提示重启整个服务 | |||
一级 | components | 是 | 组件列表,在该元素下可以设置需要安装的多个组件,拿Doris举例可分为:BE、FE | ||
二级 | component | 是 | 具体的组件,该元素下是具体组件的配置信息 | ||
三级 | name | 组件名称,唯一值 | FRONTEND | ||
displayName | 组件在页面显示名称 | Doris Frontend | |||
category | 组件类型,取值: MASTER、SLAVE、CLIENT | MASTER | |||
cardinality | 需要安装的机器数(目前测试只有当category类型为MASTER时,该值生效),可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。 | 1 | |||
timelineAppid | 存储 metric 数据的类型 | ||||
commandScript | 标准命令,调用python脚本,用来执行该组件的某些操作 | ||||
四级 | script | 是 | 基础命令如:启动/停止等命令需要执行的函数的脚本名称 | ||
scriptType | 脚本类型,为:PYTHON | PYTHON | |||
timeout | 超时时间 | 1200 | |||
三级 | customCommands | 是 | 自定义运行命令,在UI中更多可以看到该选项配置的脚本 | ||
四级 | customCommand | 是 | |||
五级 | name | 执行自定义函数名称,如:password_init,则在下方设置脚本中需要包含该方法,UI中显示 | |||
background | 一般为true | ||||
五级 | commandScript | 是 | 上面配置自定义命令执行的脚本配置 | ||
六级 | script | 上面配置自定义命令执行的脚本文件 | |||
scriptType | 脚本类型,为:PYTHON | PYTHON | |||
三级 | configFiles | 是 | 当 category 为CLIENT时,该值设置需要下载的配置文件 | ||
四级 | configFile | 是 | 需要下载配置文件具体配置 | ||
五级 | type | 文件类型 env:将 dictionaryName 定义的配置文件中<name>content</name> 的属性内容放到新文件里下载 properties:将 dictionaryName 定义的配置文件转换为 properties 格式,提供下载 xml:将 dictionaryName 定义的配置文件转换为 xml 格式存储,提供下载 | env/properties/xml | ||
fileName | 在Ambari WebUI下载下来的文件名 | ||||
dictionaryName | 读取configuration目录下的对应配置文件名称前缀,不包含.xml | ||||
二级 | commandScript | 是 | 服务检查脚本配置 | ||
三级 | script | 运行的脚本一般为:scripts/service_check.py | |||
scriptType | 脚本类型,为:PYTHON | PYTHON | |||
timeout | 超时时间 | ||||
二级 | osSpecifics | 是 | |||
三级 | osSpecific | 是 | |||
四级 | osFamily | 设置 any 为所有操作系统都匹配 | |||
二级 | themes | ||||
三级 | theme | ||||
四级 | fileName | json 文件,指定的主题文件名称 | |||
default | 一般为 true | ||||
themes-dir | 可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 themes 目录,则可以跳过它。 | ||||
二级 | quickLinksConfigurations | 是 | 快捷链接,在WebUI中快速跳转的链接,通常为服务的管理监控页面,如Hbase Master UI | ||
三级 | quickLinksConfiguration | 是 | 快捷链接,在WebUI中快速跳转的链接,通常为服务的管理监控页面,如Hbase Master UI | ||
四级 | quickLinksConfigurations-dir | 默认值:quicklinks,可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 quicklinks 目录,则可以跳过它 | |||
fileName | json 文件,指定的 quickLink 文件名称 | ||||
default | 一般为 true |
# 配置文件样例
下面两个是简单的样例,可用作参考
# DORIS
<?xml version="1.0"?>
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<!--服务名称,在所有Ambari安装服务中保持唯一-->
<name>DORIS</name>
<!--在Ambari Web UI中显示的名称-->
<displayName>Doris</displayName>
<!--服务描述,在安装服务时候提示的说明-->
<comment>Doris 2.0.5 版本服务安装</comment>
<!--版本号,安装服务时name+version组合去重-->
<version>2.0.5</version>
<!--设置服务在初次部署集群时强制安装-->
<!--<selection>MANDATORY</selection>-->
<configuration-dependencies>
<config-type>fe</config-type>
</configuration-dependencies>
<components>
<component>
<!--组件名称-->
<name>FRONTEND</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>MASTER</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>1</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
<customCommands>
<customCommand>
<name>node_check</name>
<background>true</background>
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
</customCommand>
<customCommand>
<name>add_backends</name>
<background>true</background>
<commandScript>
<script>scripts/fe.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
</customCommand>
</customCommands>
</component>
<component>
<!--组件名称-->
<name>FRONTEND_OBSERVER</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend Observer</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>1+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/frontend_observer.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<!--组件名称-->
<name>FRONTEND_FOLLOWER</name>
<!--组件在页面显示名称-->
<displayName>Doris Frontend Follower</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>0+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/frontend_follower.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<!--组件名称,command-xxx.json中的backend_hosts字段命名就是这个取的字段-->
<name>BACKEND</name>
<!--组件在页面显示名称-->
<displayName>Doris Backend</displayName>
<!--组件类型,取值: MASTER、SLAVE、CLIENT-->
<category>SLAVE</category>
<!--需要安装的机器数,可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。-->
<cardinality>0+</cardinality>
<!--是否宣称版本,用于回滚和升级-->
<versionAdvertised>true</versionAdvertised>
<!--存储 metric 数据的默认类型-->
<timelineAppid>doris</timelineAppid>
<!--标准命令,必填选项调用python脚本,用来执行该组件的某些操作,该脚本包含启动、停止等执行方法-->
<commandScript>
<script>scripts/be.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1200</timeout>
</commandScript>
</component>
<component>
<name>DORIS_CLIENT</name>
<displayName>Doris Client</displayName>
<category>CLIENT</category>
<cardinality>1+</cardinality>
<versionAdvertised>true</versionAdvertised>
<commandScript>
<script>scripts/doris_client.py</script>
<scriptType>PYTHON</scriptType>
</commandScript>
<configFiles>
<configFile>
<type>properties</type>
<fileName>fe.conf</fileName>
<dictionaryName>fe</dictionaryName>
</configFile>
<configFile>
<type>properties</type>
<fileName>be.conf</fileName>
<dictionaryName>be</dictionaryName>
</configFile>
<configFile>
<type>properties</type>
<fileName>doris-env</fileName>
<dictionaryName>doris-env</dictionaryName>
</configFile>
</configFiles>
</component>
</components>
<commandScript>
<script>scripts/service_check.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1800</timeout>
</commandScript>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.xml 文件。如果我们希望服务使用默认的 configuration 目录,则可以跳过它。-->
<!--<configuration-dir></configuration-dir>-->
<!--快捷链接,在WebUI中快速跳转的链接,通常为服务的管理监控页面,如Hbase Master UI-->
<quickLinksConfigurations>
<quickLinksConfiguration>
<!--默认值:quicklinks,可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 quicklinks 目录,则可以跳过它-->
<!--<quickLinksConfigurations-dir></quickLinksConfigurations-dir>-->
<!--json 文件,指定的 quickLink 文件名称-->
<fileName>quicklinks.json</fileName>
<!--一般为 true-->
<default>true</default>
</quickLinksConfiguration>
</quickLinksConfigurations>
<!--根据不同操作系统选择不同的安装包-->
<osSpecifics>
<osSpecific>
<osFamily>any</osFamily>
</osSpecific>
</osSpecifics>
<!--设置主题配置-->
<themes>
<theme>
<!--可选字段。用于告诉 Ambari Server 在哪里加载 xxx.json 文件。如果我们希望服务使用默认的 themes 目录,则可以跳过它。-->
<!--<themes-dir></themes-dir>-->
<!--json 文件,指定的主题文件名称-->
<fileName>theme.json</fileName>
<!--一般为 true-->
<default>true</default>
</theme>
<theme>
<fileName>directories.json</fileName>
<default>true</default>
</theme>
</themes>
<requiredServices>
<service>ZOOKEEPER</service>
<service>HDFS</service>
<service>SPARK2</service>
</requiredServices>
</service>
</services>
</metainfo>
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
上次更新: 2024/04/08, 10:46:11