海豚1.3单节点,多集群设置

文章讲述了在CDH升级到CDP的过程中,由于海豚调度单节点限制,作者通过修改源码实现多集群任务调度。修改包括移除final修饰、新增集群地址判断以及调整资源配置。最终,作者成功实现了在不同集群间切换运行任务的功能。
摘要由CSDN通过智能技术生成

最近出差忙项目,一直没更新,现在项目结尾了。回来继续搞集群

公司因为CDH升级为CDP,两套环境数据和任务慢慢迁移,但是调度任务需要同时跑批。 

而我们的海豚调度是单节点的,master和worker等服务都在一台节点上。

之前我有说过海豚每次执行完都会去yarn上检查一下任务状态。去判断这个任务是成功还是失败。

但是配置文件中,只能设置一套大数据环境。

这时候就有3种解决办法了:

1、新增worker节点,单独设置租户和worker组。每个任务需要单独拆分出来。时间成本过高。

2、新搭建一套集群,两套集群各跑各的。浪费资源。需要单独copy一套环境。

3、改海豚的源码。

当然涉及到技术问题,当然是改源码了。否则不真成了SQL BOY了。。

海豚版本:1.3.9

改源码前

。因为我是做了提交脚本的,两套提交脚本提交到不同的集群。那么他会报错如下

 因为在 common.properties 中设置了

 而且没办法设置多套。所以改配置的想法不行。当然我也试过在 yarn.resourcemanager.ha.rm.ids 参数后面加上新集群地址,也是不行的。

那么现在只有改源码了

改源码后

根据报错信息很容易定位问题。

一共修改3个地方:

1、把final 去掉

public static String rmHaIds = PropertyUtils.getString(Constants.YARN_RESOURCEMANAGER_HA_RM_IDS);

2、新增,如果不新增,老集群会受到影响。因为 rmHaIds 地址已经变成新集群了

rmHaIds = PropertyUtils.getString(Constants.YARN_RESOURCEMANAGER_HA_RM_IDS);

3、新增判断,用于切换Yarn集群地址 

        if (StringUtils.isBlank(responseContent)) {

            rmHaIds = "新集群yarn的RM地址";

            logger.warn("yarn集群RM转换成功,当前RM节点为: "+rmHaIds);

            applicationUrl = getApplicationUrl(applicationId);

            logger.warn("applicationUrl-2地址为:{}",applicationUrl);

            responseContent = HttpUtils.get(applicationUrl);

            logger.warn("responseContent-2状态: "+responseContent);

打包服务重启

1、将jar包打包后上传到服务器上。

替换的包:$DOLPHINSCHEDULER_HOME/lib/dolphinscheduler-common-1.3.9.jar

2、将原生包给备份

我是备份到海豚目录了。方便出问题回滚

3、将自己的包放到lib目录下

 4、重启服务

sh 海豚根目录/bin/dolphinscheduler-daemon.sh stop worker-server
sh 海豚根目录/bin/dolphinscheduler-daemon.sh start worker-server
jps

执行两套环境的脚本。

打印日志

结尾

没注意后续版本是否支持。但是目前我用的1.3.9貌似是不支持的。

有什么问题欢迎反馈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值