導航:首頁 > 數據處理 > checkpoint可以保留哪些數據

checkpoint可以保留哪些數據

發布時間:2023-06-10 11:00:50

㈠ 【Flink 精選】闡述 Flink 的容錯機制,剖析 Checkpoint 實現流程

Flink 容錯機制主要是 狀態的保存和恢復,涉及 state backends 狀態後端、checkpoint 和 savepoint,還有 Job 和 Task 的錯誤恢復

Flink 狀態後端是指 保存 Checkpoint 數據的容器 ,其分類有 MemoryStateBackend、FsStateBackend、RocksDBStateBackend ,狀態的分類有 operator state 和 keyed state

Flink 狀態保存和恢復主要依靠 Checkpoint 機制和 Savepoint 機制,兩者的區別如下表所示。

快照的概念來源於相片,指照相館的一種沖洗過程短的照片。在計算機領域, 快照是數據存儲的某一時刻的狀態記錄 Flink Snapshot 快照是指作業狀態的全局一致記錄 。一個完整的快照是包括 source 運算元的狀態(例如,消費 kafka partition 的 offset)、狀態運算元的緩存數據和 sink 運算元的狀態(批量緩存數據、事務數據等)。

Checkpoint 檢查點可以自動產生快照,用於Flink 故障恢復 。Checkpoint 具有分布式、非同步、增量的特點。

Savepoint 保存點是用戶手動觸發的,保存全量的作業狀態數據 。一般使用場景是作業的升級、作業的並發度縮放、遷移集群等。

Flink 是採用輕量級的分布式非同步快照,其實現是採用柵欄 barrier 作為 checkpoint 的傳遞信號,與業務數據一樣無差別地傳遞下去 ,目的是使得數據流被切分成微批,進行 checkpoint 保存為 snapshot。當 barrier 經過流圖節點的時候,Flink 進行 checkpoint 保存狀態數據。
如下圖所示,checkpoint n 包含每個運算元的狀態,該狀態是指checkpoint n 之前的全部事件,而不包含它之後的所有事件。

針對用戶作業出現故障而導致結果丟失或者重復的問題,Flink 提供3種語義:
At-Least-Once 最少一次 :不會丟失數據,但可能會有重復結果。
Exactly-Once 精確一次 :checkpoint barrier 對齊機制可以保障精確一次。

FailureRateRestartStrategy :允許在指定時間間隔內的最大失敗次數,同時可以設置重啟延時時間。
FixedDelayRestartStrategy :允許指定的失敗次數,同時可以設置重啟延時時間。
NoRestartStrategy :不需要重啟,即 Job 直接失敗。
ThrowingRestartStrategy :不需要重啟,直接拋異常。
Job Restart 策略可以通過 env 設置。

上述策略的父類介面是RestartStrategy,其關鍵是restart(重啟操作)。

RestartAllStrategy :重啟全部 task,默認策略。
RestartIndivialStrategy :恢復單個 task。如果該 task 沒有source,可能導致數據丟失。
NoOpFailoverStrategy :不恢復 task。
上述策略的父類介面是FailoverStrategy,其關鍵是Factory的create(創建 strategy)、onTaskFailure(處理錯誤)。

如何產生可靠的全局一致性快照是分布式系統的難點,其傳統方案是使用的全局時鍾,但存在單點故障、數據不一致等可靠性問題 。為了解決該問題, Chandy-Lamport 演算法採用 marker 的傳播來代替全局時鍾

① 進程 Pi 記錄自己的進程狀態,同時生產一個標識信息 marker(與正常 message 不同),通過 ouput channel 發送給系統裡面的其他進程。
② 進程 Pi 開始記錄所有 input channel 接收到的 message

進程 Pj 從 input channel Ckj 接收到 marker。如果 Pj 還沒有記錄自己的進程狀態,則 Pj 記錄自己的進程狀態,向 output channel 發送 marker;否則 Pj 正在記錄自己的進程狀態(該 marker 之前的 message)。

所有的進程都收到 marker 信息並且記錄下自己的狀態和 channel 的狀態(包含的 message)。

Flink 的分布式非同步快照實現了Chandy Lamport 演算法,其核心思想是 在 source 插入 barrier 代替 Chandy-Lamport 演算法中的 marker,通過控制 barrier 的同步來實現 snapshot 的備份和 Exactly-Once 語義

Checkpoint Coordinator 向所有 source 節點 trigger Checkpoint。

source task向下游廣播barrier。

當source task備份完自己的狀態後,會將備份數據的地址(state handle)通知 Checkpoint Coordinator。

map和sink task收集齊上游source的barrier n,執行本地快照。下面例子是RocksDB增量Checkpoint 的流程:首先RocksDB會全量保存到磁碟上(紅色大三角表示),然後Flink會從中選擇沒有上傳的文件進行持久化備份(紫色小三角)。

map和sink task在完成Checkpoint 之後,將狀態地址state handle返回通知 Coordinator。

當Checkpoint Coordinator收到全部task的state handle,就確定該Checkpoint已完成,並向持久化存儲中備份一個Checkpoint Meta(元數據,包括該checkpoint狀態數據的備份地址)。

閱讀全文

與checkpoint可以保留哪些數據相關的資料

熱點內容
庫房代理怎麼做 瀏覽:422
技術入股最多可以佔到多少股份 瀏覽:671
找人代理東西怎麼辦 瀏覽:715
什麼叫應用程序規則顏色 瀏覽:463
晉江製造五金產品有什麼 瀏覽:127
一建報名專業技術人員怎麼選 瀏覽:599
海鮮水產店的產品內容有哪些 瀏覽:453
雲端新技術怎麼樣 瀏覽:361
廣州市場營銷中專哪個學校好一些 瀏覽:729
可愛的程序員用的什麼手機 瀏覽:159
倫敦什麼時候進入夏令時交易 瀏覽:198
板栗為什麼要在市場選 瀏覽:545
交易貓上架商品怎麼看不到 瀏覽:588
企業的所得稅支出哪個資料庫有 瀏覽:133
成都膏葯代理多少錢 瀏覽:946
怎麼在微信發位置信息失敗 瀏覽:3
馬鈴薯可以深加工什麼產品 瀏覽:223
李佳琪公司產品有哪些 瀏覽:574
遼寧北海市場在什麼位置 瀏覽:691
工廠的產品如何防員工盜竊 瀏覽:273