一文帶你了解 Flink 基本組件棧
- 2019 年 10 月 6 日
- 筆記
今天我們大概了解下Flink的基本組件棧,看看 Flink 的分層架構
Flink 同樣遵循著分層的架構設計理念,在降低系統耦合的同時,也為上層用戶構建 Flink 應用提供了豐富且友好的介面。
Flink 分層架構,從上到下依次是:API & Libraries 層、Runtime 核心層 和 物理部署層


1
API & Libraries 層
作為分散式數據處理框架,Flink 同時提供了支撐流計算和批計算的介面,同時在此基礎上抽象出不同的應用類型的組件庫,如基於流處理的 CEP (複雜事件處理庫),SQL & TABLE 庫 和 基於批處理的 FlinkML(機器學習庫),Gelly(圖處理庫)等。
API 層包括構建流計算應用的 DataStream API 和批計算應用的 DataSet API,兩者都是提供給用戶豐富的數據處理高級 API,例如 Map,FlatMap 等,同時也提供比較低級的 Process Function API ,用戶可以直接操作狀態和時間等底層數據。

2
Runtime 核心層
該層主要負責對上層不同介面提供基礎服務,也是 Flink 分散式計算框架的核心實現層,支援分散式 Stream 作業的執行、JobGraph 到 ExecutionGraph 的映射轉換、任務調度等。
將 DataStream 和 DataSet 轉成統一的可執行的 Task Operator,達到在流式引擎下同時處理批量計算和流式計算的目的

3
物理部署層
該層主要涉及 Flink 的部署模式,目前 Flink 支援多種部署模式:本地、集群(Standalone / YARN)、雲(GCE / EC2)、kubenetes。
flink 能夠通過該層支援不同平台的部署,用戶可以根據需要選擇使用對應的部署模式。