Flink 專案是巨量資料計算領域冉冉升起的一顆新星。巨量資料計算引擎的發展經歷了幾個過程,從第 1 代的 MapReduce,到第 2 代基於有向無環圖的 Tez,第 3 代基於記憶體計算的 Spark,再到第 4 代的 Flink。
如果你希望了解各種流式計算框架的區別,請轉到:巨量資料流式計算框架匯總和對比
因為 Flink 可以基於 Hadoop 進行開發和使用,所以 Flink 並不會取代 Hadoop,而是和 Hadoop 緊密結合。
Flink 主要包括 DataStream API、DataSet API、Table API、SQL、Graph API 和 FlinkML 等。現在 Flink 也有自己的生態圈,涉及離線資料處理、實時資料處理、SQL 操作、圖計算和機器學習庫等。
Flink 是什麼?
很多人是在 2015 年才聽到 Flink 這個詞的,其實早在 2008 年,Flink 的前身就已經是柏林理工大學的一個研究性專案,在 2014 年這個專案被 Apache 孵化器所接受後,Flink 迅速成為 ASF(Apache Software Foundation)的頂級專案之一。截至目前,Flink 的版本經過了多次更新。
Flink 是一個開源的流處理框架,它具有以下特點:
-
分散式:Flink 程式可以執行在多台機器上。
-
高效能:處理效能比較高。
-
高可用:由於 Flink 程式本身是穩定的,因此它支援高可用性(High Availability,HA)。
-
準確:Flink 可以保證資料處理的準確性。
Flink 主要由 Java 程式碼實現,它同時支援實時流處理和批次處理。對於 Flink 而言,作為一個流處理框架,批資料只是流資料的一個極限特例而已。
此外,Flink 還支援疊代計算、記憶體管理和程式優化,這是它的原生特性。
由圖1可知,Flink 的功能特性如下:
-
流式優先:Flink 可以連續處理流式資料。
-
容錯:Flink 提供有狀態的計算,可以記錄資料的處理狀態,當資料處理失敗的時候,能夠無縫地從失敗中恢復,並保持 Exactly-once。
-
可伸縮:Flink 中的一個叢集支援上千個節點。
-
效能:Flink 支援高吞吐、低延遲。
圖1:Flink的功能特性