02.Ambari自定义服务开发-metainfo.xml介绍

文章目录

    • 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 &amp;
        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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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组合去重
一级selectionMANDATORY:设置服务在初次部署集群时强制安装MANDATORY
一级configuration-dependencies设置修改配置提示重启服务
二级config-type当修改该配置后提示重启整个服务
一级components组件列表,在该元素下可以设置需要安装的多个组件,拿Doris举例可分为:BE、FE
二级component具体的组件,该元素下是具体组件的配置信息
三级name组件名称,唯一值FRONTEND
displayName组件在页面显示名称Doris Frontend
category组件类型,取值: MASTER、SLAVE、CLIENTMASTER
cardinality需要安装的机器数(目前测试只有当category类型为MASTER时,该值生效),可以是固定数字 1,可以是一个范围比如 1-2,也可以是 1+、0+、ALL或者是一个范围,进行服务安装向导的时候会限制选择的机器数。1
timelineAppid存储 metric 数据的类型
commandScript标准命令,调用python脚本,用来执行该组件的某些操作
四级script基础命令如:启动/停止等命令需要执行的函数的脚本名称
scriptType脚本类型,为:PYTHONPYTHON
timeout超时时间1200
三级customCommands自定义运行命令,在UI中更多可以看到该选项配置的脚本
四级customCommand
五级name执行自定义函数名称,如:password_init,则在下方设置脚本中需要包含该方法,UI中显示image-20240407154346070
background一般为true
五级commandScript上面配置自定义命令执行的脚本配置
六级script上面配置自定义命令执行的脚本文件
scriptType脚本类型,为:PYTHONPYTHON
三级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脚本类型,为:PYTHONPYTHON
timeout超时时间
二级osSpecifics
三级osSpecific
四级osFamily设置 any 为所有操作系统都匹配
二级themes
三级theme
四级fileNamejson 文件,指定的主题文件名称
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 目录,则可以跳过它
fileNamejson 文件,指定的 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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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>
                    <!--组件类型,取值: MASTERSLAVECLIENT-->
                    <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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/750481.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ基本概念

RabbitMQ是AMQP协议的一个开源实现&#xff0c;所以其基本概念也就是的 AMQP 协 议中的基本概念。如图3-1所示是 RabbitMQ 的整体架构图。 Message(消息):消息是不具名的&#xff0c;它由消息头和消息体组成。消息体是不透明的&#xff0c; 而消息头则由一系列可选属性组成&…

六西格玛绿带可以跳过,直接学六西格玛黑带吗?真实情况告诉你

在现代企业管理中&#xff0c;六西格玛&#xff08;Six Sigma&#xff09;已经成为提升质量和效率的重要工具。对于很多企业而言&#xff0c;培养内部的六西格玛专家&#xff0c;特别是黑带&#xff08;Black Belt&#xff09;&#xff0c;是推动持续改进的关键。然而&#xff…

如何用Vue3和Plotly.js实现一个交互式世界地图动画

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 利用 Plotly.js 创建交互式世界生命预期地图 应用场景 本代码展示了如何使用 Plotly.js 创建一个交互式世界生命预期地图&#xff0c;允许用户按年份浏览不同国家和地区的生命预期数据。该地图可以用于研究世…

电脑文件concrt140.dll丢失要怎么恢复?靠谱修复方法分析

电脑文件concrt140.dll丢失这种情况&#xff0c;相对来说还是比较少见的&#xff01;但是不代表没有&#xff0c;既然有人出现这种情况了&#xff0c;那么小编势必要给大家详细的讲解一下concrt140.dll这个文件&#xff0c;以及我们要怎么去解决concrt140.dll文件丢失的问题。下…

技术贴 | RNA甲基化修饰m6A的检测——MeRIP-seq

01 m6A是什么 目前在细胞RNA中已经识别到了超过100种化学修饰&#xff0c;其中RNA甲基化修饰在生命活动中有着非常重要的作用(Xu et al 2020)。RNA甲基化是指在甲基转移酶的催化下&#xff0c;在RNA分子上的某一个原子上添加一个甲基基团(CH3)。RNA甲基化修饰类型有很多&#…

架构师篇-5、架构语言-ArchiMate

内容摘要&#xff1a; TOGAF内容元模型TOGAF架构语言ArchiMate3ArchiMate实践案例分享 TOGAF内容框架【核心内容元模型】 作为一个通用且开放式的标准&#xff0c;TOGAF需要采用一种非常灵活的方式来对其内容元模型进行定义&#xff0c;从而使得不同的企业可以根据自身需要对…

Swagger2及常用校验注释说明

Api(value "后台用户管理") RestController RequestMapping("bossuser") public class BossUserController {ApiOperation(value "测试接口")PostMapping("test")public String testUser(Valid RequestBody TestUser user) {LOG.inf…

vue表头字段添加鼠标悬浮提示

<el-table-column prop"jfScore" align"center" min-width"100px"><template slot"header" slot-scope"scope"><div><span>信用积分</span><el-tooltip:aa"scope"class"it…

nodepad 中换行符、tab替换

1 nodepad 主要符号 换行符: \r\n&#xff08;windows&#xff09; tab: \t 2 展示符号 3 相互替换 tip:需要点击扩展 参考&#xff1a; https://blog.csdn.net/lijing742180/article/details/85174564

服务器出现意外情况。(Exception from HRESULT: 0x80010105(RPC E SERVERFAULT))

这种情况一般出现在excel2007版本&#xff0c;下载了什么阅读器之类的 2007改不了这个加载项&#xff0c;需要重装一个其他版本&#xff08;2010版本可以&#xff09; 然后如下操作修改为COM加载项

步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理

文章目录 步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理继承关系入口 DispatcherServlet#doDispatch多文件上传解析获取处理器handler的完整注册流程获取HandlerAdapter执行拦截器PreHandle执行HandlerAdapter.handle参数解析器HandlerMethodArgumentResolv…

抖音外卖服务商有哪些,盘点这几家正规服务商!

当前&#xff0c;抖音外卖的关注度不断上涨&#xff0c;抖音外卖服务商也逐渐成为了众多创业者心中的理想创业赛道。在此背景下&#xff0c;抖音外卖服务商的入局途径多次引发创业者热议&#xff0c;以抖音外卖服务商有哪些公司为代表的相关话题更是长期位居创业者问题榜单的前…

走进机器学习

第1关&#xff1a;走进机器学习 机器学习简介 机器学习近年来被大规模应用在各种领域&#xff0c;特别是 NLP 领域。虽然机器学习是门建立在统计和优化上的新兴学科&#xff0c;但是在自然语言处理、数据科学等领域&#xff0c;它却占据着核心的地位。 图 1 机器学习最初的研…

论文降重困难重重?AI降重来帮忙

论文查重和降重是确保学术成果原创性及学术诚信的关键步骤&#xff0c;直接影响我们的学业成果和毕业资格。传统的论文查重方法主要包括使用查重软件和个人自查&#xff0c;而论文降重通常涉及改写、使用同义词替换、内容的扩展和深化&#xff0c;以及正确的引用和注释等方式来…

企业数据治理的下一步是数据资产管理?

随着信息技术的飞速发展和数字化转型的深入推进&#xff0c;企业数据已成为驱动业务增长和创新的核心要素。当企业数据治理工作取得显著成效后&#xff0c;如何进一步发挥数据的价值&#xff0c;实现数据资产的有效管理&#xff0c;成为企业面临的重要课题。 数据治理的基石作用…

记录一次OPDS trunc()函数使用错误

说明&#xff1a;本文介绍 场景 在一次SQL查询时&#xff0c;需要对结果值保留两位小数&#xff0c;不四舍五入&#xff0c;直接截取到小数点后两位。如 59.156到59.15&#xff0c;23.2134到23.21&#xff0c;查看官方帮助文档&#xff08;https://help.aliyun.com/zh/maxcom…

8个Unity开发高手都在用的秘密技巧!

1. 不要重新发明轮子&#xff0c;使用内置的引擎工具 在使用任何引擎时&#xff0c;比如Unity或Unreal Engine&#xff0c;一些开发者&#xff0c;主要是来自计算机科学领域的开发者&#xff0c;可能会倾向于从头开始开发大型算法或结构&#xff0c;而不去了解引擎中是否已经存…

多线程(基础)

前言&#x1f440;~ 上一章我们介绍了什么是进程&#xff0c;对于进程就了解那么多即可&#xff0c;我们作为java程序员更关注线程&#xff0c;线程内容比较多&#xff0c;所以我们要分好几部分才能讲完 目录 进程的缺点 多线程&#xff08;重要&#xff09; 进程和线程的区…

数据分析必备:一步步教你如何用matplotlib做数据可视化(14)

1、Matplotlib 图像 Matplotlib包中的图像模块提供加载&#xff0c;重新缩放和显示图像所需的功能。Pillow库支持加载图像数据。Matplotlib仅支持PNG图像。如果本机读取失败&#xff0c;下面显示的命令将回退到Pillow。 此示例中使用的图像是PNG文件&#xff0c;但请记住数据的…

计算机网络之奇偶校验码和CRC冗余校验码

今天我们来看看有关于计算机网络的知识——奇偶校验码和CRC冗余校验码&#xff0c;这两种检测编码的方式相信大家在计算机组成原理当中也有所耳闻&#xff0c;所以今天我就来跟大家分享有关他们的知识。 奇偶校验码 奇偶校验码是通过增加冗余位使得码字中1的个数恒为奇数或偶数…