State:指(zhi)一個具體(ti)的Task/Operator的狀(zhuang)態(tai)。
State可以被記錄(lu),在失敗(bai)的情(qing)況下數據還可以恢復,Flink中有(you)兩種基本(ben)類型的State: Keyed State, Operator State。
Sate在(zai)數據在(zai)容錯恢(hui)復起了非常關(guan)鍵的作用 - Operator State Task里面沒有Shuffle操(cao)作的State,換句話(hua)說(shuo),就(jiu)是沒有keyBy操(cao)作
1. Operator State是Task級別的state,就是每個Task對應(ying)一(yi)個State
2. Kafka Connector Source中(zhong)的每(mei)個分(fen)區(Task)都(dou)需(xu)要記錄消費的Topic的Partition和Offset等信息,這些(xie)信息就是state。
- Keyed State表示和(he)Key相關的一(yi)(yi)種State,基于KeyedStream上的狀(zhuang)態(tai)。Keyed State事先按照Key對(dui)數據(ju)(ju)集(ji)進(jin)行(xing)(xing)了分區(qu),每個Key State僅對(dui)應一(yi)(yi)個Operator和(he)Key的組合。Keyed State可以通(tong)過Key Groups進(jin)行(xing)(xing)管理,主(zhu)要用于當算(suan)子并行(xing)(xing)度(du)發生(sheng)變化時,自動重新(xin)分布Keyed State數據(ju)(ju)。在系統(tong)運行(xing)(xing)過程種,一(yi)(yi)個Keyed算(suan)子實(shi)例可能運行(xing)(xing)一(yi)(yi)個或者多個Key Groups 的Keys