Apache Flink 技術棧及適用場景
關注可瞭解更多大資料相關的資訊。問題或建議,請公眾號留言;
[如果你覺得深廣大資料Club對你有幫助,歡迎讚賞]
本文主要講述Apache Flink所適用於哪些型別的Application、針對不同型別的Application都有哪些經典的應用程式案例、以及Flink對不同型別的Application是如何支援的。以及Apache Flink技術棧。
技術棧
Flink作為一個軟體堆疊,是一個分層系統。堆疊的不同層相互疊加,並提高它們接受的程式表示的抽象級別:
-
執行時層以JobGraph的形式接收程式。JobGraph是一個通用的並行資料流,其中包含使用和生成資料流的任意任務。
-
DataStream API和DataSet API都通過單獨的編譯過程生成JobGraphs。資料集API使用優化器來確定程式的最佳計劃,而DataStream API使用流構建器。
-
JobGraph是根據Flink中可用的各種部署選項執行的(例如,本地、遠端、Yarn等)
-
Connector層所能對接的技術更是豐富多樣,將不同型別、不同來源的資料介入到Flink元件棧中。
與Flink繫結的庫和API生成資料集或DataStream API程式。這些表用於查詢邏輯表,FlinkML用於機器學習,Gelly用於圖形處理。
Flink 概述
Apache Flink因其豐富的功能集而成為開發和執行多種不同型別應用程式的絕佳選擇。Flink的功能包括對流和批處理的支援,複雜的狀態管理,事件時間處理語義以及狀態的一次性一致性保證。此外,Flink可以部署在各種資源提供商(如YARN,Apache Mesos和Kubernetes)上,也可以作為裸機硬體上的獨立群集。Flink配置為高可用性,沒有單點故障。Flink已經被證明可以擴充套件到數千個核心和terabytes的應用程式狀態,提供高吞吐量和低延遲,併為世界上一些最苛刻的流處理應用程式提供支援。
下面,我們將探討由Flink提供支援的最常見型別的應用程式,並指出實際示例。
-
事件驅動的應用程式
-
資料分析應用程式
-
資料管道應用程式
體系機構圖
我們先來看上述所講的三種類型的體系結構圖
事件驅動
資料分析
資料管道
三者的定義及優點
Flink支援
使用場景
Flink應用案例
-
優化電子商務的實時搜尋結果:阿里巴巴的所有基礎設施團隊使用flink實時更新產品細節和庫存資訊,為使用者提供更高的關聯性。
-
針對資料分析團隊提供實時流處理服務:king通過flink-powered資料分析平臺提供實時資料分析,從遊戲資料中大幅縮短了觀察時間
-
網路/感測器檢測和錯誤檢測:Bouygues電信公司,是法國最大的電信供應商之一,使用flin監控其有線和無線網路,實現快速故障響應。
-
商業智慧分析ETL:Zalando使用flink轉換資料以便於載入到資料倉庫,將複雜的轉換操作轉化為相對簡單的並確保分析終端使用者可以更快的訪問資料。
基於上面的案例分析,Flink非常適合於:
-
多種資料來源(有時不可靠):當資料是由數以百萬計的不同使用者或裝置產生的,它是安全的假設資料會按照事件產生的順序到達,和在上游資料失敗的情況下,一些事件可能會比他們晚幾個小時,遲到的資料也需要計算,這樣的結果是準確的。
-
應用程式狀態管理:當程式變得更加的複雜,比簡單的過濾或者增強的資料結構,這個時候管理這些應用的狀態將會變得比較難(例如:計數器,過去資料的視窗,狀態機,內建資料庫)。flink提供了工具,這些狀態是有效的,容錯的,和可控的,所以你不需要自己構建這些功能。
-
資料的快速處理:有一個焦點在實時或近實時用例場景中,從資料生成的那個時刻,資料就應該是可達的。在必要的時候,flink完全有能力滿足這些延遲。
-
海量資料處理:這些程式需要分佈在很多節點執行來支援所需的規模。flink可以在大型的叢集中無縫執行,就像是在一個小叢集一樣。
關注公眾號