學習 Flink(六):檢查點
檢查點(Checkpoint)機制是 Flink 實現錯誤容忍機制的核心。通過持續以非同步的方式儲存輕量級的映象,當錯誤(機器、網路或者軟體原因)發生時,系統重啟操作並重置操作到最新儲存成功的檢查點。
Flink 映象參考論文:ofollow,noindex" target="_blank">Lightweight Asynchronous Snapshots for Distributed Dataflows
前提
Flink 檢查點需要兩點:
- 持久化資料來源支援重放(Replay)資料,如訊息佇列(Kafka 等)檔案系統(HDFS 等)
- 持久化儲存,通常為分散式檔案系統(HDFS 等)
初始化
預設情況下,檢查點是禁用的,啟用檢查點呼叫StreamExecutionEnvironment.enableCheckpointing
方法。
val env = StreamExecutionEnvironment.getExecutionEnvironment() // 每 1000 ms 儲存一次檢查點 env.enableCheckpointing(1000) // 高階選項: // 設定模式為恰好一次(預設) env.getCheckpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE)
參考
- Apache Flink Documentation: Checkpointing
- Apache Flink Documentation: Data Streaming Fault Tolerance