提綱挈領,弄清Flink的分層架構

2020-12-16 Flink帶頭大哥

我們知道,Flink是一個分層架構的系統,每一層所包含的組件都提供了特定的抽象,用來服務於上層組件。Flink分層的組件棧如下圖所示:

Flink生態圈核心組件棧

掌握了Flink的分層架構,後面的學習就可以圍繞每個層級的核心內容來學習或研究。

Flink一共分為四個層級,具體如下圖所示:

Flink四層架構

Flink 最下面的一層API為Stateful Stream Processing,它是Flink最底層的API,控制更靈活但一般很少使用。然後上面一層就是Flink Core(核心)API,它包含DataStream和DataSet API,應用層的用戶經常使用 Core API。然後再上面一層就是 Table API,它相當於在Core API中可以定義數據的Table結構,可以做table操作。最上面一層就是SQL 操作,用戶可以直接使用SQL語句對數據處理,更簡單更方便。

注意:越底層的API越靈活,但越複雜。越上層的API越輕便,但靈活性差。

1. Stateful Stream Processing

a)它位於最底層,是Core API 的底層實現。

b)它是嵌入到Stream流裡面的處理函數(processFunction)。

c)當Core API滿足不了用戶需求,可以利用低階API構建一些新的組件或者算子。

d)它雖然靈活性高,但開發比較複雜,需要具備一定的編碼能力。

2. Core API

a) DataSet API 是批處理API,處理有限的數據集。

b) DataStream API是流處理API,處理無限的數據集。

3. Table API & SQL

a)SQL 構建在Table 之上,都需要構建Table 環境。

b)不同的類型的Table 構建不同的Table 環境中。

c)Table 可以與DataStream或者DataSet進行相互轉換。

d)Streaming SQL不同於存儲的SQL,最終會轉化為流式執行計劃。

相關焦點

  • 開篇|揭秘 Flink 1.9 新架構,Blink Planner 你會用了嗎?
    2.Flink 1.9 Table 架構Blink 的 Table 模塊的架構在開源時就已經實現了流批統一,向著 Flink 的未來架構邁進了第一步,走在了 Flink 社區前面。FLIP-32是:Restructure flink-table for future contributions) 進行了重構和優化,從而使得 Flink Table 的新架構具備了流批統一的能力,可以說 Flink 1.9 是 Flink 向著流批徹底統一這個未來架構邁出的第一步。
  • Structured Streaming與Flink比較
    官方給了詳細的運行架構圖,可以參考:Flink也不支持與維表進行join操作,除了map,flatmap這些算子之外,flink還有異步IO算子,可以用來實現維表,提升性能。關於flink的異步IO可以參考浪尖以前的文章:Flink異步IO第一講5.
  • 六邊形架構和分層架構的區別
    作為一個後端程式設計師,MVC三層架構的模式相信大家都不會陌生,三層分別從上而下排布,只能由上層調用下層。一般越往下層越通用,越上層越細節。這些優化的動作,通常不會改變原有的業務邏輯。
  • Flink寫入hive測試
    >      <groupId>org.apache.flink</groupId>      <artifactId>flink-core</artifactId>      <version>${flink.version}</version>      <!
  • 你了解分層架構嗎?給被PetShop「毒害」的朋友
    【IT168 技術文章】    筆者在仔細閱讀了大量這方面文章後,認為許多朋友在分層架構的理解上存在兩個比較大的偏頗:    1.沒有從本質角度去理解分層的內涵,而只是了解其表象。    2.對分層架構的理解過於狹隘,只是少數概念,而又不夠深入。
  • 一篇文章讓深入理解Flink SQL 時間特性
    _import org.apache.flink.table.api.Tableimport org.apache.flink.table.api.scala._import org.apache.flink.table.api.EnvironmentSettingsimport org.apache.flink.table.api.scala.
  • flink-1.12.0 upsert-kafka connector demo
    參考官網:https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh
  • Flink 全網最全資源(視頻、博客、PPT、入門、實戰、源碼解析、問答等持續更新)
    15、flink的Python api怎樣?bug多嗎?16、Flink VS Spark Streaming VS Storm VS Kafka Stream17、你們做實時大屏的技術架構是什麼樣子的?flume→kafka→flink→redis,然後後端去redis裡面撈數據,醬紫可行嗎?
  • 淺析整潔架構之道(三) 明析分層原則
    架構的分層概述在我們開始之前,我們再次回到The Clean Architecture的這個概述圖上來。上篇文章筆者論述了The Clean Architecture整潔架構的基本理念,分層及黃金法則。
  • Flink保證端到端exactly-once語義(也適用於kafka)
    接下來,我們進一步介紹flink的這個特性:    •flink的checkpoints在保證exactly-once語義是的作用    •flink是如何通過兩部提交協議來保證從數據源到數據輸出的exactly-once語義    •通過一個例子來解釋如果應用TwoPhaseCommitSinkFunction來實現一個exactly-once的sinkexactly-once
  • 數據說話:大數據處理引擎Spark與Flink比拼
    Spark 和 Flink 的引擎技術  這一部分主要著眼於 Spark 和 Flink 引擎的架構方面,更看重架構帶來的潛力和限制。現階段的實現成熟度和局限會在後續生態部分探討。  數據模型和處理模型  要理解 Spark 和 Flink 的引擎特點,首先從數據模型開始。
  • 圍觀致遠 | 「因材施教」,架構英語閱讀分層模式
    建鄴區第五盟區江心洲中學、中華上新河中學、南京市致遠初級中學三所學校的初中英語教師們參加本次研討活動,盟區負責人周志健校長親臨課堂並參加研討,為各位老師解答疑問,並對關於如何實行閱讀課能力分層問題做了深入的交流。研討結束後,老師們更加清晰地把握住按學生能力進行閱讀分層的方向,也都表示在今後的課堂閱讀教學中會積極落實「分層教學」。
  • Flink 端到端 Exactly-once 機制剖析
    但是,flink有很多外接系統,比如將數據寫到kafka,一旦作業失敗重啟,offset重置,會消費舊數據,從而將重複的結果寫到kafka。如下圖:      這個時候,僅靠系統本身是無法保證exactly-once的。系統之間的數據一致性一般要靠2PC協議來保證,flink的TwoPhaseCommitSinkFunction也是基於此實現的。
  • 數據倉庫系統架構和數倉分層體系介紹
    一、數據倉庫體系架構 公司藉助的第三方數據平臺,在此平臺之上建設數據倉庫。因為第三方平臺集成了很多東西,所以省去了不少功夫。 數據倉庫的體系架構,無外乎就是數據源、數據採集方式、計算存儲系統、數據應用層,這幾個方面。
  • 你的數據倉庫既要有「維度模型設計」也要看「分層架構」
    維度模型設計和分層架構都是數據倉庫必不可缺的。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。而分層架構的設計的主要是為在管理數據的時候,能對數據有一個更加清晰的掌控。
  • Flink SQL 實戰:HBase 的結合應用
    當然,本文假設用戶有一定的 HBase 知識基礎,不會詳細去介紹 HBase 的架構和原理,本文著重介紹 HBase 和 Flink 在實際場景中的結合使用。主要分為兩種場景,第一種場景:HBase 作為維表與 Flink Kafka table 做 temporal table join 的場景;第二種場景:Flink SQL 做計算之後的結果寫到 HBase 表,供其他用戶查詢的場景。
  • Flink最難知識點再解析 | 時間/窗口/水印/遲到數據處理
    數據在源源不斷的進入flink,我們設置好window的大小為5s,flink會以5s來將每分鐘劃分為連續的多個窗口。org.apache.flink.streaming.api.functions.AssignerWithPeriodicWatermarksimport org.apache.flink.streaming.api.scala.function.WindowFunctionimport org.apache.flink.streaming.api.scala.
  • Apache Beam實戰指南 | 手把手教你玩轉KafkaIO與Flink
    技術也隨著時代的變化而變化,從 Hadoop 的批處理,到 Spark Streaming,以及流批處理的 Flink 的出現,整個大數據架構也在逐漸演化。Apache Beam 作為新生技術,在這個時代會扮演什麼樣的角色,跟 Flink 之間的關係是怎樣的?Apache Beam 和 Flink 的結合會給大數據開發者或架構師們帶來哪些意想不到的驚喜呢?
  • Apache Flink 1.5.5 和 1.6.2 發布,通用數據處理平臺
    </groupId>  <artifactId>flink-java</artifactId>  <version>1.5.5</version></dependency><dependency>  <groupId>org.apache.flink</groupId>  <artifactId
  • 萬字詳解Flink極其重要的Time與Window(建議收藏)
    支持兩種劃分窗口的方式(time和count)flink支持窗口的兩個重要屬性(size和interval)如果size=interval,那麼就會形成tumbling-window(無重疊數據)如果size>interval,那麼就會形成sliding-window(有重疊數據)如果size<interval,那麼這種窗口將會丟失數據