在大數據調度系統中,,大家可能會碰到任務實例狀態更新不及時的情況。 對於Apache DolphinScheduler用戶來說,這可能意味著前端顯示的任務狀態與實際情況不一致,即使任務已經在後臺停止運行,前端仍顯示為“正在運行”。 這種現象不僅影響監控和管理,還可能導致後續任務調度出現問題。那麼,當 ...
在大數據調度系統中,,大家可能會碰到任務實例狀態更新不及時的情況。
對於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的日常運維中,及時更新任務實例的狀態至關重要。通過瞭解和掌握如何手動修改任務實例狀態,我們可以快速響應並解決狀態卡住的問題,確保系統的穩定運行。
希望本文提供的方法能夠幫助你在遇到類似問題時迅速找到解決方案。
本文由 白鯨開源 提供發佈支持!