点击卡片“大数据实战演练”,选择“设为星标”或“置顶”
回复“资料”可领取独家整理的大数据学习资料!
回复“Ambari知识库”可领取独家整理的Ambari学习资料!
大家好,我是 create17,见字如面。
今天给大家分享一个 Ambari 集成第三方服务的经典知识点,Ambari 如何根据配置开关量去判断是否增加新配置。
以集成 Kyuubi 为例:
需求如下:
Ambari 在集成 Kyuubi 时,如何实现点击开关量配置则实现 kyuubi.ha.client.class = org.apache.kyuubi.ha.client.zookeeper.ZookeeperDiscoveryClient,不选择则配置为空,并渲染到配置文件中。
逻辑分析与改造:
先在 kyuubi-defaults.xml 里面添加开关属性:
<property>
<name>kyuubi.ha.enabled</name>
<value>true</value>
<value-attributes>
<type>boolean</type>
</value-attributes>
<on-ambari-upgrade add="false"/>
<description>是否启用 Kyuubi 高可用</description>
</property>
然后在 param.py 文件中,编写逻辑:
kyuubi_ha_enabled = config['configurations']['kyuubi-defaults']['kyuubi.ha.enabled']
if kyuubi_ha_enabled:
kyuubi_ha_client_class = "org.apache.kyuubi.ha.client.zookeeper.ZookeeperDiscoveryClient"
else:
kyuubi_ha_client_class = ""
然后在 .j2 模板文件中,引用变量就好了。在 KYUUBI/package 目录下,创建 templates 目录,用来放置 .j2 模板文件,比如名叫 kyuubi-defaults.conf.j2。
kyuubi.ha.client.class = {{ kyuubi_ha_client_class }}
...省略其余配置
然后在服务生命周期 .py 文件,添加 j2 文件渲染逻辑,即:将 kyuubi-defaults.conf.j2 内容渲染到 kyuubi-defaults.conf 中:
File(format("{kyuubi_conf_dir}/kyuubi-defaults.conf"),
owner=params.kyuubi_user,
group=params.kyuubi_group,
mode=0644,
content=Template("kyuubi-defaults.conf.j2")
)
为学员解惑并跟踪改造结果:
学员遇到问题,我都会支持一起想办法解决。遇到经典的问题,我还会把它记录到知识星球中,分享给大家一起学习成长。
其他:
其实关于集成服务的配置渲染实现方法有很多,上面举例说明的是将 kyuubi-defaults.conf 配置项都一个个手动放在 j2 文件中,然后渲染到指定配置文件中,然后重启服务。
这是一种实现方式,当然还有更优雅的实现方式,已经分享到了Ambari自定义服务集成的知识星球中了,供已付费的会员们查看。
如果觉得学习 Ambari自定义服务集成 有困难,或找不到资料,都可以联系我,我可以帮你几次,如果信任我,也可以报名我的Ambari课程,永久学习,详情可点击「阅读原文」查看。
ending
一个人可以走得很快,但一群人才能走得更远。我的Ambari课程累计学员已经有 400+。感谢信任的同时,如果你需要一个良好的Ambari学习与交流环境,就加入我们吧。这是一个学习Ambari的付费私密圈子,里面的人都是Ambari的活跃二次开发者,报名后,你可以享有知识星球 + 学员微信群 + 课程资料(笔记、视频等)+ 导师学习陪伴答疑服务,认识更多大佬,和大家一起成长。欢迎点击左下角阅读原文了解我的编程星球,这可能是你学习求职路上最有含金量的一次点击。

最后,把我的座右铭送给大家:执行是破除焦虑的有效办法,明确并拆解自己的目标,一直行动,剩下的交给时间。共勉 💪。
戳“阅读原文”,查看最新内容