一、核心特點
1.1、流批一體
1、無界資料
無界資料是持續產生的資料,所以必須持續的處理無界資料流,因為輸入是無限的,沒有終止時間,處理無界資料通常要求以特定順序獲取,以便判斷事件是否完整、有無遺漏,
2、有界資料
有界資料就是在一個確定的時間范圍內的資料流,有開始有結束,一旦確定了就不會再改變,
1.2、可靠的容錯能力
1、集群級容錯
- 與集群管理器集成
Flink與集群管理器緊密集成,例如Yarn、K8s,當行程掛掉時,將自動啟動一個新行程來接管它作業,
- 高可用性設定
Flink具有高可用性模式特性,可消除所有單點故障,HA模式基于Apache Zookeeper,
2、應用級容錯
Flink使用輕量級分布式快斬訓制,設計了檢查點(CheckPoint)來實作可靠的容錯,
- 一致性
Flink的恢復機基于應用程式狀態的一致性檢查點,如果發生故障,將重新啟動應用程式并從最新的檢查點加載其狀態,Flink利用檢查點特性,在框架層面提供了Exactly-Once的支持,內置了支持Exactly-Once語意的Sink,即使出現故障,也能保證資料只寫出一次,
- 輕量級
對于長期運行的Flink,其檢查點的狀態可能高達TB級,生成和保存檢查應用程式的檢查點成本非常高,所以Flink提供了檢查點的執行異步和增量檢查點,以便盡量降低生成和保存檢查點帶來的計算負荷,避免資料處理的延遲例外變大和吞吐量的短暫劇降,
1.3、高吞吐、低延遲
Flink借助輕量級分布式快斬訓制,能定時生成分布式快照,并保存到外部存盤中,檢查點之間的資料處理被當做是原子的,如果失敗,直接回到上一個檢查點重新執行,在整個資料處理程序中不會產生阻塞,Flink在資料的計算、傳輸、序列化等方面也做了大量的優化,既能保持資料處理的低延遲,也能盡可能提高吞吐量,
1.4、大規模復雜計算
- 有狀態計算
- 輕量級容錯
1.5、多平臺部署
Flink是一個分布式計算系統,可以與常見的集群管理器(如Hadoop Yarn、K8s)集成,也可以在物理服務器上作為獨立集群運行,
二、架構
2.1、技術架構
Flink技術架構圖如下:

對于開發者而言,直接使用API層和應用框架層,兩者的差別在于API的層次不同,API層是Flink對外提供的核心API,應用框架層是在核心API之上提供的面向特定計算場景、更加易用的API,
- 應用框架層
指根據API層的劃分,在API層之上構建的滿足特定應用場景的計算框架,總體上分為流計算(Flink Table&SQL、FlinkCEP)和批處理(Flink Table&SQL、FlinkML、FlinkGelly)兩類應用框架,
- API層
API層是Flink對外提供能力的介面,實作了面向流計算的DataStream Api和面向批次處理的DataSetApi,為了推進流批API的統一,DataSet API未來會被廢棄,
- 運行時層
- DAG抽象:將分布式計算作業拆成并行子任務,每個子任務表示資料處理的一個步驟,并在上下游之間建立資料流的流通關系,
- 資料處理:包含了開發層面、運行層面的資料處理抽象,如 Join、Filter等,
- 作業調度:調度流批作業的執行,
- 容錯:提供了集群級、應用級容錯處理機制,保障集群、作業的可靠運行,
- 記憶體管理、資料序列化:通過序列化,使用二進制方式在記憶體中存盤資料,避免JVM的垃圾回收帶來的停頓問題,
- 資料交換:資料在計算任務之間的本地、跨網路傳遞,
- 部署層
Flink提供了靈活的部署模式,如 Strandalone、Yarn、Mesos、K8s、云服務
- 連接器
Connector是Flink計算引擎與外部存盤互動的IO抽象,是Source和Sink的具體實作,
2.2、運行架構
Flink運行架構圖如下:

Flink采用Master-Slave架構,Master的角色是JobManager,負責集群和作業管理,Slave的角色是TaskManager,負責執行計算任務,
- Flink客戶端:是Flink提供的CLI命令列工具,用來提交Flink作業到Flink集群,在客戶端中負責Stream Graph(流圖)和Job Graph(作業圖)的構建,
- JobManager:根據并行度將Flink客戶端提交的Flink應用分解為子任務,從資源管理器申請所需要的的計算資源,資源具備后,開始分發任務到TaskManager執行Task,并負責應用容錯,跟蹤作業的執行狀態,發現例外則恢復作業等,
- TaskManager:接收JobManager分發的子任務,根據自身的資源情況,管理子任務的啟動、停止、銷毀、例外恢復等生命周期階段,
接下來Flink應用篇,如果對Flink感興趣或者正在使用的小伙伴,可以加我入群一起探討學習,
參考書籍《Flink 內核原理與實作》

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293898.html
標籤:其他
