oozie如何真正殺死僵死任務,你是不是被kill命令騙了?

目錄

1. Oozie僵死任務的形成原因分析

2. 解決方法

3. 總結


1. Oozie僵死任務的形成原因分析

(1)同時提交多個任務導致相互等待

(2)提交任務後,yarn掛了或yarn的資源不足

(3)提交了任務後,不小心將後臺腳本刪除

(4)oozie的配置文件中的resourcemananger地址寫錯,導致連接不上yarn。

     一般來講Oozie僵死的任務用kill命令就能解決,但有時候我們殺完後回到Oozie WebUi界面看,明明剛纔殺死的任務還是處於Running狀態,用Oozie jobs查看殺死的任務其顯示的也是killed狀態,但Web界面上還是未改過來,這是什麼原因呢?原因在於Oozie Web界面的數據是從Oozie配置的元數據庫中取數據,一般我們配置在Mysql中,有時候你採用了kill命令進行幹掉,但Mysql數據庫中狀態並未更新過來,這樣導致Web界面上顯示的還是原來的狀態。面對此種情況,我們往往需要在kill任務後,再在Mysql數據庫中手動更新其狀態,這樣保持其殺死任務後,界面顯示能與實際保持同步。下面給出一種具體殺死任務的解決方法。

2. 解決方法

      步驟1:重啓Oozie

      因數據都是寫數據庫的,不能清除數據,只是嘗試重啓。

     步驟2:利用Oozie命令殺死job

   (1)先找到僵死的job id

     到oozie webui上找到僵死任務id

   進入任務中找到子任務ID

     僵死的job id爲:0000027-190827162618880-oozie-oozi-W  

    (2)利用oozie命令殺掉

        su oozie(需要到oozie用戶上去殺死)

       oozie job --oozie http://10.1.3.11:11000/oozie -kill 0000027-190827162618880-oozie-oozi-W,標黃色的爲oozie的連接地址。

   (3)通過oozie jobs | grep + job id來查詢該job的狀態

   (4)到oozie webui界面查看狀態是否改變。如果還沒被殺死,繼續步驟3

      步驟3:到oozie的數據庫更新job status       

            (1) 進去mysql數據庫查詢:WF_JOBS

SELECT * FROM oozie.`WF_JOBS` WHERE id ='0000027-190827162618880-oozie-oozi-W';

     查看可以看到在Mysql數據庫中狀態依然是RUNNING並未更新過來,所以此時我們需要手動更新Mysql數據庫中狀態,這樣才能真正保證任務與界面顯示同步 ,纔算真正完成對僵死任務的殺死。

          (2)更新狀態job status:

UPDATE WF_JOBS SET STATUS = 'SUCCEEDED' WHERE id ='0000027-190827162618880-oozie-oozi-W';

      (3)查看Oozie WebUi的狀態

              可以看到Oozie Web Ui 的狀態由剛開始的兩個變成1個

          到此纔算真正把僵死任務幹掉。

3. 總結

     本文針對Oozie殺死僵死任務後,Oozie Web界面顯示與實際不同步的問題,給出了一種具體的解決方法,一般的可以用Oozie的kill命令進行解決,對於一些特殊的情況kill後依然還是處於RUNNING狀態的可以嘗試重啓Oozie再kill,如果還是未解決,需要到Oozie的Mysql數據庫下查出目前的狀態,更新其狀態進行數據同步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章