《基于Apache Flink的流處理》讀書筆記( 二 )


4.3狀態后端:把算子狀態寫到存儲系統為了保證狀態的快速訪問,每個并行的任務都會把狀態存儲在本地JVM , 狀態后端負責將任務狀態以檢查點的形式寫入到遠程持久化存儲,該存儲可能是一個分布式的文件系統,也可能是某個數據庫系統
五.算子擴縮容算子主要有OperateState和KeyedState,他們的擴縮容方法不一樣
5.1鍵控狀態(KeyedState)KeyState發生重新分配后,key值分配到哪個Task上,則對應的KeyState也會分配到對應的Task上        做法是:將Key值讀取出來,Hash分配到KeyGroup上,KeyGroup的數量對應著重分區Task的數量,最后把KeyGroup分配到對應的Task上 。
5.2算子狀態OperatorStateListState:把所有狀態的ListState收集起來,均勻分配給新的任務        Union List State:將List收集起來,廣播到全部的任務,由任務決定去留        BrodCastState:廣播狀態都一樣,直接拷貝到新的任務上
六、窗口6.1時間窗口有滾動、滑動、會話三種
6.1.1滾動窗口:Tumbling Windows將數據依據固定的窗口長度對數據進行切分        時間對齊 , 窗口長度固定,沒有重疊
6.1.2滑動窗口:Sliding Windows滑動窗口是固定窗口的更廣義的一種形式,滑動窗口由固定的窗口長度和滑動間隔組成        窗口長度固定 , 可以有重疊
6.1.3會話窗口(Session Windows)一段時間沒有接收到新數據就會生成新的窗口,消息之間的間隔小于超時閾值(sessionGap)的,則被分配到同一個窗口,間隔大于閾值的,則被分配到不同的窗口        特點:時間無對齊
七、Flink組成7.1JobManager控制單個應用程序的執行,包括接收要執行的應用JobGraph和Jar文件、將JobGraph轉化成ExecutionGraph、向ResourceManager申請資源啟動TaskManager、分發應用給TaskManager執行、檢查點CheckPoint工作
7.2ResourceManager向集群資源提供者申請資源、釋放資源
7.3TaskManager1.注冊Slot         2.啟動任務
7.3Dispatcher1.啟動JobMaster         2.提供REST應用查詢
八、高可用性1.依賴Zookeeper來完成                 1.1.活躍狀態的JobManager將JobGraph和Jar的路徑寫到Zookeeper中                 1.2.將CheckPoint的路徑寫入Zookeeper中         2.應用恢復,當活躍的JobManager發生故障,其下的應用都會取消                 2.1新接手的JobManager請求Zookeeper,獲取JobGraph和Jar文件以及CheckPoint                 2.2重啟應用
九、數據傳輸1.在算子處理完數據后,為了不造成太大的網絡壓力 , 不會馬上發送,會先收集到緩沖區中,以批次形式發送         2.每個TaskManager都有網絡緩沖池,用于不同機器數據傳輸         3.如果接收端和發送端位于同一臺機器內,序列化先放入緩沖區 , 緩沖區完畢放到隊列中,接收任務獲取數據再反序列化         4.如果發送端和接收端不在同一個機器,放入緩存后,先發送到TaskManager的網絡緩沖池中,再進行發送
十、WaterMark特殊的數據記錄,必須單調遞增        處理亂序事件 , 正確處理亂序事件,通常用WaterMark結合Windows實現        當時間戳達到窗口關閉時間,不應該立即觸發窗口計算 , 等待一段時間,等待延遲再關閉窗口
水位線分配策略                周期性:以固定事件間隔來發出水位線并且推動事件前進 。默認間隔為200毫秒                        AssignerWithPeriodicWatermarks                定點水位線分配:根據輸入事件的屬性來生成水位線                        AssignerWithPunctuatedWatermarks

推薦閱讀