Flink 狀態管理

2021-10-18 04:16:04 字數 1313 閱讀 5728

有些任務的結果不僅僅依賴於當前的輸入,也依賴於之前的輸入結果資訊,因此對中間結果狀態等的儲存就很有必要。

在flink中,我們可以這樣理解state:某task/operator在某時刻的乙個中間結果。

flink提供了豐富的狀態訪問介面和高效的容錯機制,當前flink中有兩個基本的state:keyed state和 operator state。

1. keyed state是基於keyedstream上的狀態,這個狀態與特定的key繫結。對於keyedstream流上每乙個key都對應乙個state(乙個task可能包含多個key,不同的task上不會出現相同的key)。

當前flink提供的keyed state資料結構是: valuestate、liststate、reducestate、mapstate。

2. operator state跟乙個特定的operator的乙個併發例項繫結,乙個task對應乙個state。

當前flink提供的operator state資料結構是: liststate

舉例來說,flink中的kafka connector,就使用了operator state。它會在每個connector例項中,儲存該例項中消費topic的所有(partition, offset)對映。

keyed state和operator state,可以以兩種形式存在:原始狀態和託管狀態。

託管狀態是由flink框架管理的狀態,如valuestate, liststate, mapstate等。

而raw state即原始狀態,由使用者自行管理狀態具體的資料結構,框架在做checkpoint的時候,使用byte來讀寫狀態內容,對其內部資料結構一無所知。通常在datastream上的狀態推薦使用託管的狀態,當實現乙個使用者自定義的operator時,會使用到原始狀態。

Flink狀態管理儲存

state一般指乙個具體的task operator的狀態。而checkpoint則表示了乙個flink job,在乙個特定時刻的乙份全域性狀態快照,即包含了所有task operator的狀態。儲存機制 statebackend 狀態後端 預設情況下,state 會儲存在 taskmanager ...

Flink的狀態管理與狀態後端

flink是乙個基於狀態計算的流計算服務。flink將所有的狀態分為兩大類 keyed state 與 operator state 所謂的keyed state指的是flink底層會給每乙個key繫結若干個型別的狀態值,特指操作 keyedstream中所涉及的狀態。所謂operator stat...

七 Flink的狀態管理以及狀態程式設計

總結flink中的狀態分為兩大類 1 managered state 被flink所管理維護的狀態,可以直接使用。常用 運算元狀態。operator state 鍵控狀態。keyed state 2 raw state 不被flink所管理,可以自己指定。比較複雜,控制底層邏輯可以使用。狀態與運算元...