> 文章列表 > metainfo.xml 解析

metainfo.xml 解析

metainfo.xml 解析

Ambari 的 metainfo.xml 信息很重要,关乎着服务的发现、安装、依赖、配置等信息

官网文档 : https://cwiki.apache.org/confluence/display/AMBARI/Writing+metainfo.xml

service

<?xml version="1.0"?><metainfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><schemaVersion>2.0</schemaVersion><services><service><!-- service 名称,该名称必须保障在stack services中是唯一的 --><name>HDFS</name><!-- service 显示名称 --><displayName>HDFS</displayName><!-- 标记用于主文件系统服务, 设置文件系统模式 --><serviceType>HDFS</serviceType> <!-- 该service的简短注释 --><comment>Apache Hadoop Distributed File System</comment><!-- service 版本,版本和名称能够唯一的定义该service,通常为该service软件的版本 --><version>2.1.0.2.0</version><!-- service 下所依赖的components列表 --><components><!-- ......... --></components><!-- service 针对OS的特定package信息,该命令会在component实例中执行 --><osSpecifics><osSpecific><!-- 该package支持os集合 --><osFamily>any</osFamily><!-- 部署服务所需的软件包列表 --><packages><package><!-- 软件包的名称(将由 yum/zypper/apt 命令使用) --><name>hadoop</name></package></packages></osSpecific><!-- ......... --></osSpecifics><!-- 服务检查的脚本 --><commandScript><!-- 脚本的相对路径 --><script>scripts/service_check.py</script><!-- 脚本的类型,只支持 : Python --><scriptType>PYTHON</scriptType><!-- 命令的自定义超时, 代替默认值 --><timeout>300</timeout></commandScript><!-- 该服务需要其他的服务 --><requiredServices><service>ZOOKEEPER</service><service>HDFS</service></requiredServices><!-- service 依赖的配置文件(被其他 services 拥有的config 也要在该列表中指定) --><configuration-dependencies><config-type>core-site</config-type><!-- ......... --></configuration-dependencies><!-- 是否在rack变更后重启 --><restartRequiredAfterRackChange>true</restartRequiredAfterRackChange><!---该文件不是配置文件时,用它指定配置目录<configuration-dir>xxxxx</configuration-dir>--><!-- 主题类型 --><themes><theme><fileName>directories.json</fileName><default>true</default></theme></themes></service></services>
</metainfo>

service/component

<component><!-- 组件的名称 --><name>NAMENODE</name><!-- 该组件的显示名称 --><displayName>NameNode</displayName><!-- 该组件的类型:MASTER/ SLAVE/ CLIENT --><category>MASTER</category><!-- 该命令将会执行当该组件实例化时 --><commandScript><!-- 该script的相对路径 --><script>scripts/namenode.py</script><!-- 该script的类型,当前仅支持PYTHON --><scriptType>PYTHON</scriptType><!-- 该script的执行超时时间 --><timeout>1800</timeout></commandScript><!-- 允许/期待实例化数量 --><cardinality>1-2</cardinality><!-- 组件是否公布其版本-在滚动/快速升级期间使用 --><reassignAllowed>true</reassignAllowed><!-- 该组件是否支持重新分配(reAssigned)/移动(Moved)到另外一个host --><versionAdvertised>true</versionAdvertised><!-- 收集该组件的指标的组件名称 --><timelineAppid>HDFS</timelineAppid><!-- 该组件所依赖其他组件列表 --><dependencies><dependency><!-- 依赖组件的名称 --><name>HDFS/ZKFC</name><!-- cluster/host。指定组件是否在同一cluster或同一host中存在 --><scope>cluster</scope><!-- 当不存在时 , 是否自动部署 --><auto-deploy><enabled>false</enabled></auto-deploy><!-- 判断该依赖是否存在的条件,如 : 在一个配置中一个属性是否存在 --><conditions><condition xsi:type="propertyExists"><configType>hdfs-site</configType><property>dfs.nameservices</property></condition></conditions></dependency><!-- ......... --></dependencies><!-- 集成日志搜索 --><logs><log><!-- 该组件的logId --><logId>hdfs_namenode</logId><!-- 是否为primary logid --><primary>true</primary></log><!-- ......... --></logs><!-- 用户自定义命令 --><customCommands><customCommand><!-- 自定义命令的名称 --><name>DECOMMISSION</name><!-- 自定义脚本的信息 --><commandScript><!-- 脚本的相对路径 --><script>scripts/namenode.py</script><!-- 脚本的类型,只支持: Python  --><scriptType>PYTHON</scriptType><!-- 命令的自定义超时 代替默认值 --><timeout>600</timeout></commandScript></customCommand><!-- ......... --></customCommands><!-- 可用的配置文件列表 --><configFiles><configFile><!-- 该配置文件的类型:xml/env sh/yaml --><type>xml</type><!-- 生成文件的名称 --><fileName>hbase-site.xml</fileName><!-- 配置属性字典 --><dictionaryName>hbase-site</dictionaryName></configFile><!-- ......... --></configFiles></component>
<!-- ......... -->

修改 metainfo

源码中服务的 metainfo 文件类似于 ambari-server\\src\\main\\resources\\stacks\\HDP\\3.0\\services\\ZOOKEEPER\\metainfo.xml 这样的路径中,如果存在继承关系,则会放在类似于 ambari-server\\src\\main\\resources\\common-services\\ZOOKEEPER\\3.4.6\\metainfo.xml这样的路径中

安装后集群后,metainfo 文件在 /var/lib/ambari-server/resources/stacks/HDP/3.0/services/ZOOKEEPER/metainfo.xml/var/lib/ambari-server/resources/common-services/ZOOKEEPER/3.4.6/metainfo.xml

在安装后的集群中修改 metainfo.xml 后必须重启 Ambari Server 才能生效,因为只有在 Ambari Server 启动时才会加载 resources 目录下相关信息