【运维技巧】海豚调度工作流实例卡在正在停止&任务实例卡在正在运行怎么办?

在大数据调度系统中,,大家可能会碰到任务实例状态更新不及时的情况。

对于Apache DolphinScheduler用户来说,这可能意味着前端显示的任务状态与实际情况不一致,即使任务已经在后台停止运行,前端仍显示为“正在运行”。

这种现象不仅影响监控和管理,还可能导致后续任务调度出现问题。那么,当你遇到这种情况时,应该如何处理呢?本文将详细介绍这一现象及其解决方法,帮助你快速恢复系统的正常运行。

现象

在Apache DolphinScheduler所在的host中查看,实际上执行的任务已经停止,但在前端界面上,任务实例的状态依然显示为“正在运行”,没有及时更新。

解决办法

要解决这个问题,我们需要手动修改Apache DolphinScheduler元数据中的任务实例状态。

以下是具体步骤:

官方元数据文档https://dolphinscheduler.apache.org/zh-cn/docs/1.3.6/metadata-1.3

  • 访问存储Apache DolphinScheduler元数据的MySQL数据库。

  • 查找存储任务实例信息的表t_ds_task_instance。

t_ds_task_instance

字段 类型 注释
ID 整数 主键
姓名 字符 任务名称
进程实例 ID 整数 流程实例id
状态 tinyint 任务实例状态:0 提交成功,1 正在运行,2 准备暂停,3 暂停,4 准备停止,5 停止,6 失败,7 成功,8 需要容错,9 kill,10 等待线程,11 等待依赖完成
  • 首先找到状态卡住的任务实例
SELECT * FROM `t_ds_task_instance` WHERE `status` = 1

如果有多个正在运行的任务实例,根据启动时间来判断具体是哪个。通过筛选其id执行SQL

手动将状态改为失败或停止。

UPDATE `t_ds_task_instance` SET state = 6 WHERE `id` = '2465747';

操作之后可以在前端看到任务实例状态已变为失败或停止。对应的工作流实例也会变为失败或停止。

错误的解决办法

之前参考的是:https://blog.csdn.net/Lzx116/article/details/128189897

该作者修改的是这个表t_ds_process_instance

此表为工作流实例的元数据表,而不是任务实例的元数据表。

修改完之后去前端看工作流实例的状态会变为“正在运行”,点击“停止”按钮后依然会卡在“正在停止”。

我猜测工作流实例的状态是检测任务实例的状态判断的,所以单纯修改工作流实例的状态不能达到目的。需要修改更基本的任务实例的状态。

结尾

在Apache DolphinScheduler的日常运维中,及时更新任务实例的状态至关重要。通过了解和掌握如何手动修改任务实例状态,我们可以快速响应并解决状态卡住的问题,确保系统的稳定运行。

希望本文提供的方法能够帮助你在遇到类似问题时迅速找到解决方案。

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

热门相关:蓝白社   春秋我为王   桃花沟(杏花沟)   一世倾心:误惹腹黑师弟   原来你喜欢我呀