flink學習(加餐)——job任務狀態變化

Yohohaha發表於2020-12-03

我們來看一下flink官網的圖:
在這裡插入圖片描述
光看圖就頭暈了,我們可以來整理一下。

首先flink job任務狀態總共有:

  • Created
  • Running
  • Finished
  • Failed
  • Canceled
  • Failing
  • Canceling
  • Restarting
  • Suspended

根據個人理解,我們可以把這些狀態分為四大類:

  1. 起始態
  2. 中間態
  3. 最終態
  4. 過渡態

起始態表示任務啟動時的狀態,中間態表示任務執行時的狀態,最終態表示任務最後的狀態,過渡態表示任務在上述這些狀態轉化時中間過渡的狀態。

這樣我們就把九個狀態歸類到四個狀態裡面去了:

狀態分類狀態
起始態Created
中間態Running
最終態Finished、Failed、Canceled
過渡態Failing、Canceling、Restarting、Suspended

為了方便理解,我們先省略掉過渡態考慮任務執行變化情況。一個job如果正常執行,那麼它的狀態變化就是:

Created -> Running -> Finished

如果失敗,則是:

Created -> Failed

Created -> Running -> Failed

如果被取消了,則是:

Created -> Canceled

Created -> Running -> Canceled

總共狀態變化就這麼四種。

這時,我們再來考慮過渡態。因為Running -> Finished是沒有中間態的,所以不用考慮過渡態。而對於FailedCanceled來說,都有各自的過渡態FailingCanceling。只需要在上述的變化鏈路中加上過渡態即可。

所以我們可以把狀態變化修改成:

失敗

Created -> Failing -> Failed

Created -> Running -> Failing -> Failed

取消

Created -> Canceling -> Canceled

Created -> Running -> Canceling -> Canceled

並且對於失敗任務來說,還有可能進行重啟,所以失敗的狀態變化還可以是:

Created -> Failing -> Restarting -> Created

Created -> Running -> Failing -> Restarting -> Created

最後,我們來看Suspended。這個狀態很簡單,只要不是最終態,都可以轉換為Suspended

這樣我們基本把一個任務的狀態變化就給理清了,總共完整的狀態鏈路變化就五條:

成功

Created -> Running -> Finished

失敗

Created -> Failing -> Failed
Created -> Running -> Failing -> Failed

取消

Created -> Canceling -> Canceled
Created -> Running -> Canceling -> Canceled

另加兩條失敗重啟的迴圈鏈路:

失敗重啟

Created -> Failing -> Restarting -> Created
Created -> Running -> Failing -> Restarting -> Created

相關文章