一个服务可以从stack继承,也可以直接从common-services里面继承。
这在metainfo.xml中声明。
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<name>HDFS</name>
<extends>common-services/HDFS/2.1.0.2.0</extends>
当一个服务从另外一个版本的服务继承时,文件和目录的定义遵从几种不同的规则。
1.下面的文件如果在当前的服务中定义了,将取代父服务中的定义:
alerts.json
kerberos.json
metrics.json
role_command_order.json
service_advisor.py
widgets.json
注意:所有的role_command_order.json会合并到stack的role command order。
2.下面的文件如果当前服务定义了,会合并父服务定义的文件。
quicklinks/quicklinks.json
themes/theme.json
3.下面的目录如果当前服务定义了会取代父服务的定义。
packages
upgrades
这意味着父服务这些目录中的文件不会继承,如果希望使用它们需要将他们拷贝到当前服务。
- 当前服务中configurations目录会合并父服务的配置文件。
如果希望服务的配置不进行继承,可以在excluded-config-types中进行指定。
<excluded-config-types>
<config-type>storm-site</config-type>
</excluded-config-types>
作为单个配置文件,比如core-site.xml,它默认会与父服务的配置合并。
如果supports_do_not_extend属性指定为true,配置将不会进行合并。
<configuration supports_do_not_extend="true">
服务元数据的继承
默认来说,当前服务metainfo.xml中定义的服务和组件的所有属性都会取代父服务的定义。
除非进行下列指定(此处有疑问。。。,如何指定的??):
<metainfo>
<schemaVersion>2.0</schemaVersion>
<services>
<service>
<name>HDFS</name>
<displayName>HDFS</displayName>
<comment>Apache Hadoop Distributed File System</comment>
<version>2.1.0.2.0</version>
<components>
<component>
<name>NAMENODE</name>
<displayName>NameNode</displayName>
<category>MASTER</category>
<cardinality>1-2</cardinality>
<versionAdvertised>true</versionAdvertised>
<reassignAllowed>true</reassignAllowed>
<commandScript>
<script>scripts/namenode.py</script>
<scriptType>PYTHON</scriptType>
<timeout>1800</timeout>
</commandScript>
...
当前服务metainfo.xml中定义的定制命令会与父服务合并。
<customCommands>
<customCommand>
<name>DECOMMISSION</name>
<commandScript>
<script>scripts/namenode.py</script>
<scriptType>PYTHON</scriptType>
<timeout>600</timeout>
</commandScript>
</customCommand>
当前服务metainfo.xml中定义的配置依赖会与父服务合并。
<configuration-dependencies>
<config-type>core-site</config-type>
<config-type>hdfs-site</config-type>
...
</configuration-dependencies>
当前服务metainfo.xml中定义的组件会与父服务合并(支持删除)。
<component>
<name>ZKFC</name>
<displayName>ZKFailoverController</displayName>
<category>SLAVE</category>