flink是乙個基於狀態計算的流計算服務。flink將所有的狀態分為兩大類: keyed state 與 operator
state .所謂的keyed state指的是flink底層會給每乙個key繫結若干個型別的狀態值,特指操作
keyedstream中所涉及的狀態。所謂operator state指的是非keyed stream中所涉及狀態稱為operator
state,所有的operator state會將狀態和具體某個操作符進行繫結。無論是 keyed state 還 是 operator state flink將這些狀態管理底層分為兩種儲存形式:
managed state和raw state
managed state- 所謂的managed state,指的是由flink控制狀態儲存結構,例如:狀態資料結構、資料
型別等,由於是flink自己在管理狀態,因此flink可以更好的針對於管理狀態做記憶體的優化和故障恢復。
raw state- 所謂的raw state,指的是flink對狀態的資訊和結構一無所知,flink僅僅知道該狀態是一些
二進位制位元組陣列,需要使用者自己去完成狀態序列化和反序列化。,因此raw state flink不能夠針對性的做記憶體優化,也不支援故障狀態的恢復。因此在flink實戰專案開發中,幾乎不使用raw state.
Flink狀態後端
memorystatebackend public memorystatebackend val env streamexecutionenvironment streamexecutionenvironment.getexecutionenvironment 配置使用memorystateback...
Flink 狀態管理
有些任務的結果不僅僅依賴於當前的輸入,也依賴於之前的輸入結果資訊,因此對中間結果狀態等的儲存就很有必要。在flink中,我們可以這樣理解state 某task operator在某時刻的乙個中間結果。flink提供了豐富的狀態訪問介面和高效的容錯機制,當前flink中有兩個基本的state keye...
Flink狀態後端和CheckPoint機制
6.8.5 狀態後端 什麼是狀態後端?每傳入一條資料,有狀態的運算元任務都會讀取和更新狀態。狀態的儲存 訪問以及維護,由乙個可插入的元件決定,這個元件就是狀態後端。狀態後端的作用?本地的狀態管理 將檢查點 checkpoint 狀態寫入遠端儲存 1 狀態後端分類 memorystatebackend...