Ambari 集成 doris 时,如何限制 Follower 与 Observer 不会部署在同一节点?

发布时间:2024-08-19 19:45  浏览量:4

点击卡片“大数据实战演练”,

回复“资料”可领取独家整理的大数据学习资料!

大家好,我是create17,见字如面。

今天给大家分享:Ambari集成服务时,如何限制服务组件A与组件B不能部署在同一节点?

关键字:Ambari集成服务如何限制组件不在同一节点。

希望我接下来的分享给大家带来一些帮助和启发🤔

一、问题描述

昨天小伙伴在 Ambari 学员群中提出问题:Ambari 集成 doris 时。将 FE 组件角色分为 FE(Follower)、FE(Observer),前者为 Master、后者为 Slave。在写部署脚本时,如何限制 Follower 与 observer 不会部署在同一节点?

这里其实可以抽象出:Ambari集成服务时,如何限制服务组件A与组件B不能部署在同一节点?

这里有两个思路,一个是页面弹窗提示;一个是报错提示。

页面弹窗提示的效果是最好的,但在 Ambari 自定义服务集成代码中,没有找到如何设置这样的限制。如果非得实现这样的交互效果,可以研究下 ambari-web 前端代码,看通过代码如何进行弹窗提示来达到限制的目的。

报错提示的思路,是群友提出来的,也是一个很好的解决办法,感谢。假如用户设置了服务组件A和组件B在同一节点,在服务部署过程中会报错,给出提示:服务组件A和组件B不能部署在同一节点。

下面详细说说报错提示的方式如何实现:

假设集成 doris 服务时的组件名称为:FOLLOWER 和 OBSERVER。我们可以通过 Ambari 内置的 python 库来获取 doris 服务 FOLLOWER 和 OBSERVER 组件所选择部署的节点列表:

# 获取当前组件所在的节点
hostname = config['agentLevelparams']['hostname']
# 获取follower组件要部署的节点
follower_hosts = default("/clusterHostInfo/follower_hosts", )
# 获取observer组件要部署的节点
observer_hosts = default("/clusterHostInfo/observer_hosts", )

然后我们就可以在 install 方法中进行判断了:

def install(self, env):
import params
env.set_params(params)

if (params.hostname in params.follower_hosts) and (params.hostname in params.observer_hosts):
# 当前节点不能同时安装observer与follower组件
Logger.info("所有安装Follower节点: {0}".format(params.follower_hosts))
Logger.info("所有安装Observer节点: {0}".format(params.observer_hosts))
raise RuntimeError("Follower与Observer不能安装在同一节点, 请调整配置后重新安装")

此时,如果 observer 与 follower 组件规划部署在同一节点,则会报错提示,从而达到限制的目的。

好了,本次分享就到这里了,如果小伙伴们有更好的解决方式,欢迎交流哦~

一个人可以走得很快,但一群人才能走得更远。我的Ambari课程累计学员已经有 400+。感谢信任的同时,如果你需要一个良好的Ambari学习与交流环境,就请加入我们吧。这是一个学习Ambari的付费私密圈子,里面的人都是Ambari的活跃二次开发者,报名后,你可以享有知识星球 + 学员微信群 + 课程资料(笔记、视频等)+ 导师学习陪伴答疑服务,认识更多大佬,和大家一起成长。也欢迎大家点击左下角了解我,希望我能提供的服务可以帮助到你。

最后,把我的座右铭送给大家:执行是消除焦虑的有效办法,明确并拆解自己的目标,一直行动,剩下的交给时间。共勉 💪。

标签: ambari observer doris

外部推荐