讀《Flink基礎教程》01 為何選擇 Flink
Flink 的一個優勢是,它擁有諸多重要的流式計算功能。其他專案為了實現這些功能,都不得不付出代價。比如,Storm 實現了低延遲,但是做不到高吞吐,也不能在故障發生時準確地處理計算狀態;Spark Streaming 通過採用微批處理方法實現了高吞吐和容錯性,但是犧牲了低延遲和實時處理能力,也不能使視窗與自然時間相匹配,並且表現力欠佳。
初探 Flink
Apache Flink 是為分散式、高效能、隨時可用以及準確的流處理應用程式打造的開源流處理框架。Flink 不僅能提供同時支援高吞吐和 exactly-once 語義的實時計算,還能提供批量資料處理。
Flink 起源於 Stratosphere 專案, Stratosphere 是在 2010~2014 年由 3 所地處柏林的大學和歐洲的一些其他的大學共同進行的研究專案。2014 年 4 月,Stratosphere 的程式碼被複制並捐獻給了 Apache 軟體基金會,Flink 一詞在德語中表示快速和靈巧。專案採用一隻松鼠的彩色圖案作為 logo,這不僅因為松鼠具有快速和靈巧的特點,還因為柏林的松鼠有一種迷人的紅棕色。
批處理與流處理
Flink 的核心計算構造是 Flink Runtime 執行引擎,它是一個分散式系統,能夠接受資料流程式並在一臺或多臺機器上以容錯方式執行。 Flink Runtime 執行引擎可以作為 YARN(Yet Another Resource Negotiator)的應用程式在叢集上執行,也可以在 Mesos 叢集上執行,還可以在單機上執行(這對於除錯 Flink 應用程式來說非常有用)。
Flink 分別提供了面向流處理的介面(DataStream API)和麵向批處理的介面(DataSet API)。因此,Flink 既可以完成流處理,也可以完成批處理。Flink 支援的拓展庫涉及機器學習(FlinkML)、複雜事件處理(CEP),以及圖計算(Gelly),還有分別針對流處理和批處理的 Table API。
Flink 提供了封裝在 Runtime 執行引擎之上的 API,以幫助使用者更方便地生成流式計算程式。