ambari-自动构建 stack继承说明

每个stack版本都应该提供metainfo.xml文件,无论是否从其他stack集成。

<metainfo>
  <versions>
    <active>true</active>
  </versions>
  <extends>2.4</extends>
  <minJdk>1.7</minJdk>
  <maxJdk>1.8</maxJdk>
</metainfo>

通过stack继承,继承的文件,不同的文件继承类型不同。
1.
properties/stack_features.json
properties/stack_tools.json

这两个文件在子stack中也不应该再进行定义。所以这里用的是2.0.6的properties。

2.
kerberos.json
widgets.json

这两个文件如果子stack定义了,则覆盖父stack的定义。
2.6的stack没有覆盖,所以使用的也是2.0.6的kerberos和widgets定义。

3.
configuration/cluster-env.xml
role_command_order.json

这两个文件如果子stack定义了,会合并父stack的定义。其中role_command_order还会合并所有service层面的文件。

4.
metainfo.xml中定义的项会覆盖父stack定义的项。

5.
hooks目录

子stack会覆盖父stack的定义,如果希望保持父stack的文件,需要将其拷贝到子stack目录。

6.
repos
upgrades

这两个目录不会继承。   

7.
service目录
这个目录有点特殊,有两种继承机制。
第一种是stack_advisor.py会自动继承父stack的脚本;但是剩下的行为由脚本的作者决定。
例如:

    class HDP23StackAdvisor(HDP22StackAdvisor):

      def __init__(self):

        super(HDP23StackAdvisor, self).__init__()

        Logger.initialize_logger()



      def getComponentLayoutValidations(self, services, hosts):

        parentItems = super(HDP23StackAdvisor, self).getComponentLayoutValidations(services, hosts)

                 ...

第二种是service目录的继承机制由service继承决定。默认的如果一个服务没有通过extends声明明确的继承,则服务会从父stack继承。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值