1. 程式人生 > 其它 >Flink學習筆記

Flink學習筆記

一、Apache Flink是什麼

在當前資料量激增的時代,各種業務場景都有大量的業務資料產生,對於這些不斷產生的資料應該如何進行有效的處理,成為當下大多數公司所面臨的問題。隨著雅虎對 Hadoop 的開源,越來越多的大資料處理技術開始湧入人們的視線,例如目前比較流行的大資料處理引擎 Apache Spark,。基本上已經取代了 MapReduce,成為當前大資料處理的標準。但隨著資料的不斷增長,新技術的不斷髮展,人們逐漸意識到對實時資料處理的重要性。相對於傳統的資料處理模式,流式資料處理有著更高的處理效率和成本控制能力。Apache Fink 近年來逐步被人們所熟知,不僅是因為 Fink 提供同時支援高吞吐、低延遲和 exactly-once 語義的實時計算能力,同時 Flink 還提供了基於流式計算引擎處理批量資料的計算能力,真正意義上實現了批流統一。

在構建企業資料倉庫的過程中,資料往往都是週期性的從業務系統中同步到大資料平臺,完成一系列 ETL 轉換動作之後,最終形成資料集市等應用。但是對於一些時間要求比較高的應用,例如實時報表統計,則必須有非常低的延時展示統計結果,為此業界提出一套 Lambda 架構方案來處理不同型別的資料。大資料平臺中包含批量計算的 Batch Layer 和實時計算的 Speed Layer,通過在一套平臺中將批計算和流計算整合在一起,例如使用 Hadoop MapReduce 進行批量資料的處理,使用 Apache Storm 進行實時資料的處理。這種架構在一定程度上解決了不同計算型別的問題,但是帶來的問題是框架太多會導致平臺複雜度過高、運維成本高等。在一套資源管理平臺中管理不同型別的計算框架使用也是非常困難的事情。後來隨著 Apache Spark 的分散式記憶體處理框架的出現,提出了將資料切分成微批的處理模式進行流式資料處理,從而能夠在一套計算框架內完成批量計算和流式計算。但因為 Spak 本身是基於批處理模式的原因,並不能完美且高效地處理原生的資料流,因此對流式計算支援的相對較弱,可以說 Spak 的出現本質上是在一定程度上對 Hadoop 架構進行了一定的升級和優化。而有狀態流計算架構的提出,從一定程度上滿足了企業的需求,企業基於實時的流式資料,維護所有計算過程的狀態,所謂狀態就是計算過程中產生的中間計算結果,每次計算新的資料進入到流式系統中都是基於中間狀態結果的基礎上進行運算,最終產生正確的統計結果。基於有狀態計算的方式最大的優勢是不需要將原始資料重新從外部儲存中拿出來,從而進行全量計算,因為這種計算方式的代價可能是非常高的。Apache Flink就是有狀態流計算架構。