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

💡 本系列文章是 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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合DataX数据同步(自动生成job文件)

SpringBoot整合Datax数据同步 文章目录 SpringBoot整合Datax数据同步1.简介设计理念 DataX3.0框架设计DataX3.0核心架构核心模块介绍DataX调度流程 2.DataX3.0插件体系3.数据同步1.编写job的json文件2.进入bin目录下,执行文件 4.SpringBoot整合DataX生成Job文件并执…

【Linux】目录和文件的权限意义

现在我们知道了Linux系统内文件的三种身份(拥有者、用户组与其他人),知道每种身份都有三种权限(rwx),也知道能够使用chown、chgrp、chmod修改这些权限与属性,当然,利用IS-l去查看文件…

一文了解“大数据招商思维”,读懂什么是大数据招商!

近年来,随着大数据及人工智能等新一代信息技术的快速发展,数据作为重要的资源和资产,成为推动经济发展的核心驱动力,广泛应用于各个领域,深刻的改变着我们的生产和生活方式。那么对于“招商引资”来说,大数…

超级加密狗——CBS(赛博锁)

智能终端设备安全现状: 随着网络和智能终端普及,云管端的智能物联应用越来越多,如何保证云端平台安全,以及各种智能终端(含智能仪器,车载终端、智能摄像头、工控机、网关路由器、智能设备、 IoT设备等&…

3D模型格式转换工具HOOPS Exchange如何实现对PRC文档的支持?

随着三维模型在各个行业中的应用越来越广泛,高效、准确的3D模型格式转换工具变得尤为重要。在众多工具中,HOOPS Exchange因其强大的功能和广泛的格式支持赢得了用户的青睐。本文将详细探讨HOOPS Exchange如何实现对PRC(Product Representatio…

XLSX + LuckySheet + LuckyExcel实现前端的excel预览

文章目录 功能简介简单代码实现效果参考 功能简介 通过LuckyExcel的transformExcelToLucky方法, 我们可以把一个文件直接转成LuckySheet需要的json字符串, 之后我们就可以用LuckySheet预览excelLuckyExcel只能解析xlsx格式的excel文件,因此对…

封装stater时配置导入配置类提示功能

提示功能如下 使用注解导入配置属性时添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

Element中的选择器组件Select (一级选择组件el-select)

简述&#xff1a;在 Element UI 中&#xff0c;ElSelect&#xff08;或简称为 Select&#xff09;是一个非常常用的选择器组件&#xff0c;它提供了丰富的功能来帮助用户从一组预定义的选项中选择一个或多个值。这里来简单记录一下 一. 组件和属性配置 <el-selectv-model&q…

为什么说牛企查查企业超好用?

步入职场的职场人士&#xff0c;经济相关专业的学生&#xff0c;都有查企业的需求&#xff0c;市面上查企业的软件平台那么多&#xff0c;每个功能都不怎么一样。 有的便宜&#xff0c;但是信息不全。有的信息还可以&#xff0c;但是会员费又很贵&#xff0c;让我这个打工人没…

垂直领域大模型的机遇与挑战:从构建到应用

在人工智能技术的浪潮中,大模型以其强大的数据处理和学习能力,成为推动科技进步的重要力量。然而,这种跨领域应用的过程并非一帆风顺,既面临挑战也蕴含机遇。本文从复旦大学的研究工作出发,详细分析大模型的机遇与挑战。 背景 GPT4技术报告指出,GPT4仍处于通用人工智…

kpatch制作内核热补丁步骤总结

零、原理及参考 kpatch入门实践教程-CSDN博客 Kpatch 使用过程及其原理-CSDN博客 一、准备工作 安装对应版本的kpatch-build.rpm并解决依赖diff -Naur dir1 dir2 > hot.patch 拿到补丁文件下载对应内核版本的src.rpm安装好对应的开发包kernel-debuginfo&#xff0c;kern…

SpringBoot 多数据源配置

目录 一. 引入maven依赖包 二. 配置yml 三、创建 xml 分组文件 四、切换数据源 一. 引入maven依赖包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1&…

既美观又方便的后台框架谁需要?进来就对了。

一套既美观又方便的后台框架可以大大幅节约开发时间和成本。 我们来一起看看几个明朗大气的管理控制台页面。 本文档会持续更新 模板编号&#xff1a;翠花_001模板编号&#xff1a;翠花_002模板编号&#xff1a;翠花_003

HTTP协议深入

1.了解web和网络基础 有客户端和服务端双方参与交互 客户端发送请求:request 服务端根据请求给出响应:response 请求通过URL来指定要获取都得资源 响应内容可以是HTML网页&#xff0c;或者用json表示的数据或者其他二进制文件内容 Web使用一种名为HTTP的协议作为规范&…

如何清理电脑内存?让电脑运行如飞!

电脑内存&#xff08;RAM&#xff09;的清理对于维持系统的流畅运行至关重要。随着使用时间的增加&#xff0c;系统内存会被各种应用程序和后台进程占用&#xff0c;导致系统响应变慢&#xff0c;甚至出现卡顿现象。通过有效地清理内存&#xff0c;可以提升电脑的性能&#xff…

实验六 SQL数据查询—单表查询

题目 打开ecommerce数据库&#xff0c;用SQL语句完成下列各项查询要求&#xff1a; 查询每位员工的员工编号empno、员工姓名empname、联系电话telephone和所在部门名称depname查询已下订单的商品的orderno、memname、proname、qty、totalmoney信息查询会员订单总金额超过2000的…

机器人视觉系统的发展前景如何?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「机器人视觉的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;机器视觉作为图像数据…

悲情短视频:成都柏煜文化传媒有限公司

悲情短视频&#xff1a;在光影交错中触动人心的温柔力量 在这个五彩斑斓的视频时代&#xff0c;悲情短视频如同一抹深秋的寒露&#xff0c;悄然落在人们的心田&#xff0c;带来一丝不易察觉却又难以抗拒的凉意。它们不以华丽的特效或激昂的音乐取胜&#xff0c;而是凭借真挚的…

UCOS-III 任务调度与就绪列表管理

01. 就绪优先级位图 在实时操作系统中&#xff0c;任务调度的效率至关重要。UCOS-III通过就绪优先级位图来快速查找最高优先级的就绪任务&#xff0c;从而实现高效调度。就绪优先级位图是一个按位表示的结构&#xff0c;每个位代表一个优先级&#xff0c;当某个优先级上有任务就…

DLS MARKETS外汇:美指牛市通道稳固,非农数据和美国大选成关键因素

摘要&#xff1a; 尽管近期美国经济数据表现疲弱&#xff0c;但美元指数&#xff08;美指&#xff09;依旧表现平稳。本周五即将公布的6月非农就业数据&#xff0c;以及即将到来的美国总统大选&#xff0c;将成为影响美元走势的关键因素。在技术面上&#xff0c;美指保持在牛市…