一文帶你了解 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 能夠通過該層支援不同平台的部署,用戶可以根據需要選擇使用對應的部署模式。