在大資料排程系統中,,大家可能會碰到任務例項狀態更新不及時的情況。
對於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的日常運維中,及時更新任務例項的狀態至關重要。透過了解和掌握如何手動修改任務例項狀態,我們可以快速響應並解決狀態卡住的問題,確保系統的穩定執行。
希望本文提供的方法能夠幫助你在遇到類似問題時迅速找到解決方案。
本文由 白鯨開源 提供釋出支援!