文章目录
- metainfo.xml 介绍
- 配置说明
- Hbase metainfo.xml配置说明
- 配置参数详细介绍
- 配置文件样例
- DORIS
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>
自己编写的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>
配置参数详细介绍
tip: 这里层级是以<service>下的元素为一级,因为我们自定义开发都是基于<service>下进行开发的,如下面所示,<name>元素为一级
<?xml version="1.0"?> <metainfo> <schemaVersion>2.0</schemaVersion> <services> <service> <!--服务名称,在所有Ambari安装服务中保持唯一--> <name>DORIS</name> </service> </services> </metainfo>
层级 | 字段名称 | 是否为父元素(即无具体值,具体值在子元素中配置) | 描述 | 取值举例 | 取值范围 |
---|---|---|---|---|---|
一级 | 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>