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.mzph.cn/bicheng/38308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Todesk远程Ubuntu桌面系统100%但是进不去桌面

1、报错情况 如下图所示&#xff0c;用Todesk远程Ubuntu桌面&#xff0c;看到连接100%了&#xff0c;但是进不去桌面 ubuntu系统看起来的话&#xff0c;已经像被远程成功了 我就首先把todesk卸载重新安装了&#xff0c;后面发现还是这样&#xff0c;于是我就找客服去问了&…

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

SpringMVC(1)——入门程序+流程分析

MVC都是哪三层&#xff1f;在Spring里面分别对应什么&#xff1f;SpringMVC的架构是什么&#xff1f; 我们使用Spring开发JavaWeb项目&#xff0c;一般都是BS架构&#xff0c;也就是Browser&#xff08;浏览器&#xff09;-Server&#xff08;服务器&#xff09;架构 这种架构…

基于SpringBoot的超市进销存系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 首页界面图 个人中心 个人中心…

ESP32实现UDP连接——micropython版本

代码&#xff1a; import network import socket import timedef wifiInit(name, port):ap network.WLAN(network.AP_IF) # 创建一个热点ap.config(essidname, authmodenetwork.AUTH_OPEN) # 无需密码ap.active(True) # 激活热点ip ap.ifconfig()[0] # 获取ip地址print(…

【D3.js in Action 3 精译】1.1.2 D3.js 的适用场景

译注 上一节中我们了解了 D3 诞生的技术背景——为了满足 Web 可访问数据的可视化需求。本节再来看看 D3.js 的适用场景是怎样的、在什么时候会考虑使用 D3.js。 1.1.2 D3.js 的适用场景 数据可视化领域正蓬勃发展&#xff0c;且备受青睐。过去十年间用于生成数据驱动图形的工…

Linux—进程与计划管理

目录 一、程序 二、进程 1、什么是进程 2、进程的特点 3、进程、线程、携程 3.1、进程 3.2、线程 3.3、携程 三、查看进程信息 1、ps -aux 2、ps -elf 3、top ​3.2、输出内容详解 3.2.1、输出第一部分解释 3.2.2、输出第二部分解释 4、pgrep 5、pstree 四、进…

【项目】论坛系统项目自动化测试

论坛系统项目自动化测试 前述一、脑图二、代码编写1.公共类InitAndEnd1.登录页面测试ForumLoginTest正常登录&#xff1a;异常登录&#xff1a; 3.注册页面测试ForumRegisterTest注册成功&#xff1a;注册失败&#xff1a; 4论坛列表页面测试ForumListTest登录状态下&#xff1…

1.spring入门案例

Spring 介绍 Spring是轻量级的开源的JavaEE框架。 Spring有两个核心部分&#xff1a;IOC和AOP IOC 控制反转&#xff0c;把创建对象过程交给Spring进行管理。 AOP 面向切面&#xff0c;不修改源代码进行功能增强。 Spring特点 1.方便解耦&#xff0c;简化开发。 2.AOP编…

算法体系-25 第二十五节:窗口内最大值或最小值的更新结构

一 滑动窗口设计知识点 滑动窗口是什么&#xff1f; 滑动窗口是一种想象出来的数据结构&#xff1a; 滑动窗口有左边界L和有边界R 在数组或者字符串或者一个序列上&#xff0c;记为S&#xff0c;窗口就是S[L..R]这一部分 L往右滑意味着一个样本出了窗口&#xff0c;R往右滑意味…

【MySQL】库的操作【创建和操纵】

文章目录 1.创建数据库1.1字符集和校验规则1.查看系统默认字符集以及校验规则2.查看数据库支持的字符集以及校验规则 1.2校验规则对数据库的影响1.创建一个数据库&#xff0c;校验规则使用utf8_ general_ ci[不区分大小写]2.创建一个数据库&#xff0c;校验规则使用utf8_ bin[区…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app&#xff0c;默认…

idea的代码提示插件使用记录

安装ai插件卸载之后&#xff0c;偶尔还是idea一直占用100%&#xff0c;将idea缓存全清理了&#xff0c;重新生成之后就正常了 idea官方插件 下面几个感觉…基本没有感觉 按行提示的偶尔有提示&#xff0c;&#xff08;cpu占用不小&#xff0c;提示不强&#xff09; 缺点&am…

Sentinel解决雪崩问题

我们或多或少都对雪崩问题有点了解&#xff0c;在微服务系统中&#xff0c;各个微服务互相调用&#xff0c;关系错综复杂&#xff0c;如果其中一个微服务挂了或者处理消息的速度大幅下降&#xff0c;需要被处理的消息越积越多&#xff0c;那么影响的不仅仅是本微服务的功能&…

C++ | Leetcode C++题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int, int> rightmostValueAtDepth;int max_depth -1;stack<TreeNode*> nodeStack;stack<int> depthStack;nodeStack.push(ro…

SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Wang受到北极海鹦的生存和捕食行为启发&#xff0c;提出了北极海鹦优化算法&#xff08;Arctic Puffin Optimization, APO&#xff09;。 2.算法原理 2.1算法思想 …

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作&#xff1a; git clone https://github.com/gperftools/gperftools.git 注&#xff1a;如果网速较慢&#xff0c;可直接去下载压缩包。 如我下载的地址&#xff1a;https://github.com/gperftools/gperftools/releases/ta…

SA 注册流程

目录 1. UE开机后按照3GPP TS 38.104定义的Synchronization Raster搜索特定频点 2.UE尝试检测PSS/SSS&#xff0c;取得下行时钟同步&#xff0c;并获取小区的PCI&#xff1b;如果失败则转步骤1搜索下一个频点&#xff1b;否则继续后续步骤&#xff1b; 3.解析Mib&#xff0c;…

WDG看门狗

1 WDG 1.1 简介 WDG是看门狗定时器&#xff08;Watchdog Timer&#xff09;的缩写&#xff0c;它是一种用于计算机和嵌入式系统中的定时器&#xff0c;用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗&#xff0c;它时刻盯着你的程序&#xff0c;确保它们正常运行。…

SpringBoot启动出错:无法访问org.springframework.boot.autoconfigure.SpringBootApplication

无法访问org.springframework.boot.autoconfigure.SpringBootApplication类文件具有错误的版本 61.0&#xff0c;应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。 出现该问题是由于版本不兼容&#xff0c; 在pom.xml文件中&#xff0c;修改版本为2开头即可