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

*字段*类型*注释**---*---*---**ID*整数*主键**姓名*字符*任务名称**进程实例ID*整数*流程实例id**状态*tinyint*任务实例状态0提交成功1正在运行2准备暂停3暂停4准备停止5停止6失败7成功8需要容错9kill10等待线程11等待依赖完成*

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

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

17182686520499dd0556e122580e7a29bb6360dacfeeb

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

现象

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

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

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