海豚调度监控:新增依赖缺失巡检,上游改动再也不用担心了!

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。

祝开卷有益:)

用过 DolphinScheduler 的小伙伴应该都知道,DolphinScheduler 的依赖任务是被动检测的,下游配置了上游的依赖,下游任务启动的时候,会检测上游任务是否成功,这个过程不是很复杂,但却是比较容易出问题的。

file

本文先说明了依赖节点删除的影响(背景),最后是巡检任务的逻辑(解决方案)。

感兴趣的小伙伴也可以看看之前的历史文章:

海豚调度调优 | 如何解决任务被禁用出现的Bug

海豚调度调优 | 正在运行的工作流(DAG)如何重新拉起失败的任务(Task)

背景:

使用调度的团队越来越多,任务也越来越多,互相依赖的任务也变多了,任务会随着数仓的迭代,进行下线、删除等操作。

如图,工作流① 里面有任务 A,工作流② 里面有任务 dep_A 和 B

file

打开依赖节点dep_A,可以看到上游任务是 A,可以正常限时任务名字。

file

我把任务 A 删掉,如图1-3,打开依赖节点dep_A,就只能看到一个code,不能显示名称了。(其实就是找不到上游任务了)。

file

工作流② 后面在运行的时候,依赖节点dep_A,在运行的时候就会一直卡在那里,找不上游任务,因为已经被删了或者被禁用了。

为什么呢?因为依赖(DEPENDE)节点里面配置的是上游任务的projectCodedefinitionCodedepTaskCode。只要上游任务被禁用、删除、或者复制了一个新的出来,depTaskCode 就会变或者找不到。

依赖节点找不到上游任务是谁,就没办法判断运行状态了,就会一直卡在那里。

解决方案:

回到生产环境,使用调度的团队越来越多,任务也越来越多,互相依赖的任务也变多了,任务会随着数仓的迭代,进行下线、删除等操作。这种依赖缺失的现象就越来越多了,这是用户操作不当导致的重大生产事故,必须要防止这种情况。

解决方案就是新增一个依赖巡检。一段 SQL + 一个告警脚本搞定!

file 第一步是先清理调度任务的血缘关系到一张 mysql 表。
第二步是检测依赖缺失,报警到钉钉群。

先看下 SQL主要逻辑逻辑,清洗调度任务的关系,包括依赖节点,依赖节点是一个json结构的数据,把它解析出来,最后看关联不上的任务,就是缺失依赖的任务,然后告警出来。
file

①清洗逻辑如下:

脚本放在 GitHub上了,dep_mysql.sql[1]
清洗之后,产出了 4 张表
1.t_ds_dag_task_relation_base_data 关系基础数据表

2.t_ds_task_node_base_data 任务基础表,后续会用于 Nebula Graph,这个后面会讲。

3.t_ds_dag_task_relation_dep_data_df 依赖节点关系表,用于后续依赖告警的的主表

4.t_ds_dag_task_relation_data_df 关系最终表,后续会用于 Nebula Graph,这个后面会讲。

②写一个 Python 脚本运行上述 SQL

脚本放在 GitHub上了,run_dep_mysql.py[2]
主要是运行第一步的 SQL。

③告警脚本:

脚本放在 GitHub上了,check_dolphin_deps_lost.py[3]
主要是拿 t_ds_dag_task_relation_dep_data_df 这个表的上游工作流code、上游任务code 关联 t_ds_task_node_base_data 任务信息表,关联不上的就是被删除了或者修改了,要告警出来,提醒用户。

④告警结果展示!

file 新增了这个依赖巡检之后,用户操作导致的依赖缺失问题被解决了,用户改动任务再也不用担心了!就算操作失误,巡检也会告警出来,提醒用户及时修复掉。

这个 SQL 放在 Mysql 执行速度很快,对主库没什么压力,可以把数据实时同步到 Doris ,再做巡检,也是可以的。

以上就是依赖缺失巡检的全部内容,如果有任何疑问,都可以与我交流,希望可以帮到你,下次见。

参考资料

[1]

dep_mysql.sql:https://github.com/aikuyun/dolphin\_practices/blob/main/dep\_mysql.sql

[2]

run_dep_mysql.py:https://github.com/aikuyun/dolphin\_practices/blob/main/run\_dep_mysql.py

[3]

check_dolphin_deps_lost.py:https://github.com/aikuyun/dolphin\_practices/blob/main/check\_dolphin\_deps\_lost.py

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代理IP和VPN有什么区别?该怎么选择?

今天我们来聊聊很多人关心的一个问题——代理IP和VPN到底有什么区别?虽然它们听起来差不多,但其实有很大的不同。这篇文章,小编就带大家一起了解一下吧! 什么是代理IP? 代理IP是一种通过代理服务器替换用户真实IP地址…

第3章.中央服务器的物联网模式--AI/ML集成

第3章.中央服务器的物联网模式 本章列出了由于存储和/或计算需求而部署在中央服务器上以及部署在边缘(本地)或云上的体系结构模式。 这些模式基于现场设备生成的数据提供见解,使用附加数据(来自附加系统,如企业系统&am…

【数据结构】建堆的时间复杂度

一.向下调整建堆 1.二叉树层数与总节点个数关系 层数一定时,在二叉树节点个数最大的情况下,二叉树为满二叉树,如下图所示,可以清晰地看到在满二叉树中第h层有2^(h-1)个节点,总节点N就等于一个等比数列的求和&#xf…

6.基于SpringBoot的SSMP整合案例-业务层开发

目录 1.业务层标准开发 1.1接口定义 1.2实现类定义 1.3测试类定义 1.4小结: 2.业务层快速开发 2.1使用MyBatisP1us提供有业务层通用接口(ISerivce)与业务层通用实现类(ServiceImpl),t> 接口定义: 实现类定义: 测试类: …

AI绘画Stable Diffusion 超高分辨率扩图教程:ControlNet组件-Tile妙用,增强细节保持构图完整!

大家好,我是向阳 今天给大家分享如何用AI绘画工具Stable Diffusion 的 ControlNet Tile工具应用。ControlNet Tile模型能够在SD绘图过程中,实现高分辨率下实现高清扩图,并且避免出现图像分身现象,以及可以调整SD扩散生产过程噪声…

Linux下安装opencv

本次安装的是 opencv3.4.1&#xff0c;在java里面对应的maven配置是 <dependency><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>opencv</artifactId><version>3.4.1-1.4.1</version> </dependency>安装依赖包…

el-date-picker 开始时间选定后,结束时间不可选择开始时间之前的日期

<el-date-pickerv-model"startTime"name"startTime"value-format"yyyy-MM-dd"type"date"change"activityStartTime"placeholder"请选择开始日期":picker-options"pickerOptions"/> <el-date-p…

python项目实战(二手房屋出租系统)

文章目录 1.系统概述2.技术栈3.系统功能4.核心代码分析5. 代码实现6.实现细节6.未来改进方向 在当今数字化时代&#xff0c;自动化和数字化管理工具对于提高效率至关重要。在这篇博客中&#xff0c;我们将一起探索如何使用Python编程语言来创建一个简单的二手房屋出租管理系统。…

Unity射击游戏开发教程:(29)躲避敌人的子弹射击

在这篇文章中,我将介绍如何创建一个可以使玩家火力无效的敌人。创建的行为如下...... 当玩家向敌人开火时,敌人会向左或向右移动。向左或向右的移动是随机选择的,并在一段时间后停止敌人的移动。如果敌人移出屏幕,它就会绕到另一边。将一个精灵拖到画布上,将其缩小以匹配游…

代码随想录-二叉搜索树①

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 98. 验证二叉搜索树 题目描述&#xff1a; 输入输出示例&#xff1a; 思路和想法&#xff1a; 530. 二叉搜索树的最小绝对差 题目描述&#x…

几个好用json数据处理工具地址

一、在线JSON转SQL工具 在线JSON转SQL - BTool在线工具软件&#xff0c;为开发者提供方便。 二、免费在线 Excel 到 SQL 转换器 免费在线 Excel 到 SQL 转换器 - bfotool 三、json格式化 JSON在线 | JSON解析格式化—SO JSON在线工具 四、json转实体类 在线JSON转C#实体类&…

python实现支付宝异步回调验签

说明 python实现支付宝异步回调验签&#xff0c;示例中使用Django框架。 此方案使用了支付宝的pythonSDK&#xff0c;请一定装最新版本的&#xff0c;支付宝官网文档不知道多久没更新了&#xff0c;之前的版本pip安装会报一些c库不存在的错误&#xff1b; pip install alipay-…

Nature:使用语义熵检测大语言模型中的幻觉

使用语义熵检测大语言模型中的幻觉 Detecting hallucinations in large language models using semantic entropy 论文阅读摘要研究目标论文图表概述总结关键解决方案语义熵计算:虚构内容检测: 双向蕴涵在大语言模型中的应用上下文的重要性蕴涵估计器 实验设计语义熵计算步骤结…

C++ 实现学生成绩管理系统

C 实现学生成绩管理系统 思路&#xff1a; 定义 Student 类&#xff0c;包含学生的基本信息和成绩。实现添加学生、删除学生、修改成绩、显示所有学生成绩和查找学生的功能。使用向量&#xff08;vector&#xff09;存储学生信息。 #include <iostream> #include <…

Docker Compose 安装以及命令的详细解析

Docker Compose 是一种用于定义和运行多容器Docker应用程序的工具。通过Compose&#xff0c;可以使用YAML文件来配置应用程序所需的所有服务&#xff0c;然后使用单个命令创建并启动所有服务。Docker Compose 提供了一种高效、简洁的方式来管理Docker容器和服务&#xff0c;使得…

文献解读-基准与方法研究-第十五期|《不同 DNA 测序平台的标准化比较》

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;结构变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;Standardized Comparison of Different DNA Sequencing Platforms标题&#xff08;中文&#xff09;&#xff1a;不同 DNA…

CSS Border(边框)

CSS Border(边框) 引言 在网页设计中&#xff0c;边框是增强元素视觉效果和页面布局的重要工具。CSS 提供了丰富的边框样式属性&#xff0c;允许开发者自定义边框的宽度、颜色、样式等。本文将详细介绍 CSS 边框的相关属性&#xff0c;包括基本用法和高级技巧&#xff0c;帮助…

【规范】Git分支管理,看看我司是咋整的

前言 &#x1f34a;缘由 Git分支管理好&#xff0c;走到哪里都是宝 &#x1f3c0;事情起因&#xff1a; 最近翻看博客中小伙伴评论时&#xff0c;发现文章【规范】看看人家Git提交描述&#xff0c;那叫一个规矩一条回复&#xff1a; 本狗亲测在我司中使用规范的好处&#xf…

windows电脑如何使用计划任务定时重启电脑

下面是亲测可用。 1.windows设置-搜索控制面板-系统和安全-管理工具–计划任务 这时候开始创建计划任务了 1.创建基本任务 2.填写名称&#xff08;这里根据需要自己填写&#xff09; 2.触发器里选择&#xff1a;每日&#xff0c;下一步 3.修改时间&#xff0c;然后点击下…

解密智慧校园学工管理系统的学生机构功能

智慧校园学工管理系统中的“学生机构”功能&#xff0c;是专为促进学生组织高效运作和校园文化繁荣而设计的一套数字化管理工具。它从多个维度出发&#xff0c;全面覆盖学生组织的生命周期管理&#xff0c;确保学生自治能力和校园活力得到显著提升。 首先&#xff0c;这一功能支…