Flink 操作

Apache Flink是一個支持有邊界的和無邊界的數據流的有狀態計算的框架。因爲很多流式應用被設計成在最短的停機時間內持續運行,所以一個流式處理器必須提供卓越的失敗恢復能力,同時提供工具在應用運行的時候監控和維護他們。

 

Flink非常關注流式處理的操作方面。下面,我們說明一下Flink的失敗恢復機制並且列出他的管理和監控運行程序的特性。

 

一、 24/7不間斷地運行你的應用

機器和處理失敗在分佈式系統中是非常常見的。爲了可以七天二十四小時(24/7)的運行流式應用,像Flink這樣的分佈式流式處理器必須能夠從失敗中恢復。很明顯,這意味着不僅僅是在失敗以後重啓嚶嚶,同時也要保證它內部狀態的持續性,也就是說應用就好像什麼也沒有發生一樣的運行。

 

Flink提供了幾個特性來保證應用保持運行並且保持一致性:

 

  • 一致的檢查點(Consistent Checkpoints):Flink的恢復機制是基於應用的狀態的一致性檢查點。萬一發生了失敗,應用會重啓並且它的狀態會從最近的檢查點中恢復。
  • 高效的檢查點(Efficient Checkpoints):如果應用管理TB的狀態信息,那麼該應用的狀態檢查點將是非常昂貴的。Flink可以執行異步的增量檢查點,這樣是爲了使服務的應用等級協議(SLAs)延遲非常小。
  • 端到端的僅僅一次(End-to-End Exactly-Once):Flink 針對特定的存儲系統提供了支持事務的sink以保證數據僅僅被寫一次,即使是在失敗的情況下。
  • 與集羣管理器集成(Integration with Cluster Managers):Flink與集羣管理器緊密集成,比如Hadoop Yarn, Mesos 或者Kubernetes。當一個進程失敗的時候,另一個進程會自動的啓動並且接管他的工作。
  • 高可用的設置(High-Availability Setup):Flink提供了一種高可用性模式,可以消除所有的單點故障。高可用性模式是基於Apache Zookeeper的,它爲可靠地分佈式協調提供了久經考驗的服務。

 

二、更新、遷移、暫停以及重啓你的應用

 支持關鍵業務的流式應用需要被維護。bug需要被修復,改進或者新功能需要被實現。然而,更新一個有狀態的流式應用,並不是簡單的。經常來說我們並不能簡單的停止應用並且重啓一個已修復的或者改進的版本,因爲我們不能失去應用的狀態。

 

Flink的SavePoints是惟一的並且非常強大的特性,它可以解決更新有狀態的應用的問題以及相關的挑戰。保存點是一個應用狀態的連續快照,因此它與檢查點非常類似。然而與檢查點相比,保存點需要手動的觸發,並且當應用停止以後不會自動的移除。保存點可以用來啓動狀態兼容的應用並且初始化它的狀態。保存點支持以下特性:

 

  • 應用升級(Application Evolution):保存點可以被用於升級應用。應用的修復bug或者升級的版本可以從保存點重啓,保存點是來源於這個應用的先前版本。它也可以從更早的保存點來啓動應用(假如這樣的保存點存在的話),這樣可以用來修復有缺陷的版本產生的結果。
  • 集羣遷移(Cluster Migration):使用保存點,應用可以遷移或者克隆島不同的集羣。
  • Flink 版本更新(Flink Version Updates):使用保存點,可以把一個應用遷移到新的Flink版本運行。
  • A/B測試以及假定場景(A/B Test And What-If Scenarios):同一個應用的兩個(或者更多)不同版本的性能或者質量可以通過從相同的保存點來啓動所有的版本進行比較。
  • 暫停和重啓(Pause and Resume):可以通過產生保存點然後停止來暫停應用。在隨後的任意時間,這個應用可以通過這個保存點來重啓。
  • 歸檔(Archiving):保存點可以被歸檔,這樣可以重置應用的狀態到更早的時間點。

三、監控和控制你的應用

正如其他服務一樣,持續運行的流式應用需要被監控並且集成到一個組織的基礎的操作中去,比如監控和日誌服務。監控有助於預測問題並且提前做出反應。日誌有助於在研究失敗時進行根本問題分析。最後,控制運行的應用的簡單訪問的接口是重要的特性。

 

Flink與許多常見的日誌和監控服務集成的很好,並且提供了REST API來控制應用和查詢信息。

 

  • Web UI:Flink提供了web UI來檢查、監控和調試運行的應用。它也可以用於提交執行或者取消他們的執行操作。
  • Logging:Flink 實現了流行的slf4j日直接扣並且與日誌框架log4j或者logback相集成。
  • Metrics:Flink 提供了一套複雜的指標系統來收集和報告系統和用戶定義的指標。指標可以被導出到不同的報告,比如JMX、Ganglia、Graphite、 Prometheus、 StatsD、 Datadog以及 Slf4j。
  • REST API:Flink 提交了REST API來提交一個新的應用,產生一個正在運行的應用的保存點,或者取消(cancel)應用。REST API也用來披露元數據(meta data)以及收集運行中或者已完成的應用的指標。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章