Ambari的metainfo.xml详解(翻译)

metainfo.xml定义了Ambari管理Service的一些配置内容,该文件对应Service定义起着至关重要的作用。

结构

一级结构

Field Usage Sample Values
name service的名称,该名称必须保障在stack services中是唯一的 HDFS
displayName 该service的显示名称 HDFS
version 该service的版本,版本和名称能够唯一的定义该service,通常该版本为该service软件的版本 2.7.3
components 该service下所依赖的components列表 请参考HDFS metainfo.xml
osSpecifics 该service针对OS的特定package信息,该命令会在component实例中执行 请参考HDFS metainfo.xml
commandScript component组service级别的命令也是支持的 请参考HDFS metainfo.xml
comment 该service的简短注释 Apache Hadoop Distributed File System
requiredServices 所以来的其他services 请参考HDFS metainfo.xml
configuration-dependencies 该service所依赖的配置文件(被其他services拥有的config也要在该列表中指定) 请参考HDFS metainfo.xml
restartRequiredAfterRackChange 是否在rack变更后重启 true/false
configuration-dir

service/components

Field Usage Sample Values
name 组件的名称 HDFS
displayName 该组件的显示名称 HDFS
category 该组件的类型:MASTER/SLAVE/CLIENT
commandScript 该命令将会执行当该组件实例化时 请参考HDFS metainfo.xml
cardinality 允许/期待实例化数量 比如1-2 对于Master,1+对于Slave
reassignAllowed 该组件是否支持重新分配(reAssigned)/移动(Moved)到另外一个host true/false
versionAdertised(?) does the component advertise its version - used during rolling/express upgrade true/false
timelineAppid AmbariMetrics搜集该组件时的名称 请参考HDFS metainfo.xml
dependencies 该组件所依赖其他组件列表 请参考HDFS metainfo.xml
customCommands 用户自定义命令 RESTART_LLAP (Check out HIVE metainfo)

service/osSpecifics

Field Usage Sample Values
osFamily 该package支持os集合 any => all
redhat6,debian7,ubuntu12,ubuntu14,ubuntu16
packages 部署该service所依赖的packages列表 请参考HDFS metainfo.xml
package/name package名称 hadoop-lzo等

service/component/dependencies/dependency

Field Usage Sample Values
name 依赖组件的名称 HDFS/ZKFC
scope 该scope是否存在同一个cluster/host cluster/host
auto-deploy 是否自动部署,当不存在时 true/false
conditions 判断该依赖是否存在的条件,比如在一个配置中一个属性是否存在 请参考HDFS metainfo.xml
<dependency>
  <name>HDFS/ZKFC</name>
  <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>

service/component/commandScript

Field Usage Sample Values
script 该script的相对路径 请参考HDFS metainfo.xml
scriptType 该script的类型,当前仅支持PYTHON 请参考HDFS metainfo.xml
timeout 该script的执行超时时间 请参考HDFS metainfo.xml

示例:

<commandScript>
  <script>scripts/service_check.py</script>
  <scriptType>PYTHON</scriptType>
  <timeout>300</timeout>
</commandScript>

service/component/logs

Field Usage Sample Values
logId 该组件的logId 请参考HDFS metainfo.xml
primary 是否为primary logid 请参考HDFS metainfo.xml
<log>
  <logId>hdfs_namenode</logId>
  <primary>true</primary>
</log>

service/component/customCommand

参考service/component/commandScript

service/component/configFiles

Field Usage Sample Values
type 该配置文件的类型:xml/env sh/yaml 请参考HDFS metainfo.xml
fileName 该生成文件的名称 请参考HDFS metainfo.xml
dictionaryName ambari-server管理该配置文件的路径 请参考HDFS metainfo.xml

metainfo.xml示例

<metainfo>
  <schemaVersion>2.0</schemaVersion>
  <services>
    <service>
      <name>HBASE</name>
      <displayName>HBase</displayName>
      <comment>Non-relational distributed database and centralized service for configuration management &amp;
 synchronization
      </comment>
      <version>0.96.0.2.0</version>
      <components>
        <component>
          <name>HBASE_MASTER</name>
          <displayName>HBase Master</displayName>
          <category>MASTER</category>
          <cardinality>1+</cardinality>
          <versionAdvertised>true</versionAdvertised>
          <timelineAppid>HBASE</timelineAppid>
          <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>
          <commandScript>
            <script>scripts/hbase_master.py</script>
            <scriptType>PYTHON</scriptType>
            <timeout>1200</timeout>
          </commandScript>
          <customCommands>
            <customCommand>
              <name>DECOMMISSION</name>
              <commandScript>
                <script>scripts/hbase_master.py</script>
                <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>
          <timelineAppid>HBASE</timelineAppid>
          <commandScript>
            <script>scripts/hbase_regionserver.py</script>
            <scriptType>PYTHON</scriptType>
          </commandScript>
        </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>
              <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>
          </configFiles>
        </component>
      </components>

      <osSpecifics>
        <osSpecific>
          <osFamily>any</osFamily>
          <packages>
            <package>
              <name>hbase</name>
            </package>
          </packages>
        </osSpecific>
      </osSpecifics>

      <commandScript>
        <script>scripts/service_check.py</script>
        <scriptType>PYTHON</scriptType>
        <timeout>300</timeout>
      </commandScript>
      
      <requiredServices>
        <service>ZOOKEEPER</service>
        <service>HDFS</service>
      </requiredServices>

      <configuration-dependencies>
        <config-type>core-site</config-type>
        <config-type>hbase-site</config-type>
        <config-type>ranger-hbase-policymgr-ssl</config-type>
        <config-type>ranger-hbase-security</config-type>
      </configuration-dependencies>

    </service>
  </services>
</metainfo>

参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容