為什麼Flink會成為下一代大數據處理框架的標準

導讀:本文將告訴你Flink是什麼,以及為什麼Flink會成為下一代大數據處理框架的標準。

作者:張利兵

如需轉載請聯繫華章科技

01 什麼是Flink?

在當前數據量激增傳統的時代,不同的業務場景都有大量的業務數據產生,對於這些不斷產生的數據應該如何進行有效地處理,成為當下大多數公司所面臨的問題。

隨著雅虎對Hadoop的開源,越來越多的大數據處理技術開始湧入人們的視線,例如目前比較流行大數據處理引擎Apache Spark,基本上已經取代了MapReduce成為當前大數據處理的標準。

但隨著數據的不斷增長,新技術的不斷髮展,人們逐漸意識到對實時數據處理的重要性,企業需要能夠同時支持高吞吐、低延遲、高性能的流處理技術來處理日益增長的數據。

為什麼Flink會成為下一代大數據處理框架的標準

相對於傳統的數據處理模式,流式數據處理則有著更高的處理效率和成本控制。Apache Flink就是近年來在開源社區發展不斷髮展的能夠支持同時支持高吞吐、低延遲、高性能分佈式處理框架。

在2010至2014年間,由柏林工業大學,柏林洪堡大學和哈索普拉特納研究所聯合發起名為“Stratosphere: Information Management on the Cloud”研究項目,該項目在當時的社區逐漸具有一定社區知名度,2014年4月,Stratosphere代碼被貢獻給Apache 軟件基金會,成為Apache基金會孵化器項目。

期初參與該項目的核心成員均來自Stratosphere原來的核心成員,之後團隊的大部分創始成員離開學校,共同創辦了一家名叫Data Artisans的公司,其主要業務便是將Stratosphere,也就是之後的Flink實現商業化。在項目孵化期間,項目Stratosphere改名為Flink。

Flink在德語中是快速和靈敏的意思,用來體現流式數據處理器的速度快和靈活性強等特點,同時使用棕紅色松鼠圖案作為Flink項目的Logo,也是主要藉助於松鼠靈活快速的特點,由此Flink開始正式地進入社區開發者的視線。

為什麼Flink會成為下一代大數據處理框架的標準

02 為什麼Flink會成為下一代大數據處理框架的標準?

在2014年12月,該項目成為Apache 軟件基金會頂級項目,從2015年09月發佈第一個穩定版本0.9,到2019年4月已經發布到1.8的版本,更多的社區開發成員也逐步地加入,現在Flink在全球範圍內擁有350多位的開發人員,不斷有新的特性被髮布。

同時在全球範圍內,越來越多的公司開始使用Flink,在國內比較出名的互聯網公司如Alibaba,美團,滴滴等,都在大規模的使用Flink作為企業的分佈式大數據處理引擎。

Flink在近年來逐步被人們所熟知和使用,其主要原因不僅因為提供同時支持高吞吐、低延遲和exactly-once語義的實時計算能力,同時Flink還提供了基於流式計算引擎處理批量數據的計算能力,真正意義實現了批流統一,同時隨著Alibaba對Blink的開源,極大地增強了Flink對批計算領域的支持。

眾多優秀的特性,使得Flink成為開源大數據數據處理框架中的一顆新星,隨著國內社區不斷推動,越來越多的國內公司開始選擇使用Flink作為實時數據處理的技術,在將來不久的時間內,Flink也將會成為企業內部主流的數據處理框架,最終成為下一代大數據數據處理框架的標準。

03 Flink的重要特性及優勢

有狀態流計算將會隨著技術的發展,逐步成為企業作為構建數據平臺的架構模式,而這種技術實現的開源方案目前從社區來看,能夠滿足的就是Apache Flink。Flink通過實現Google Dataflow流式計算模型實現了高吞吐,低延遲,高性能兼具實時流式計算框架。

為什麼Flink會成為下一代大數據處理框架的標準

▲有狀態計算架構

同時Flink支持高效容錯的狀態管理,Flink能夠將其狀態維護在內存或RockDB數據庫中,為了防止狀態在計算過程中因為系統異常而出現丟失,Flink週期性的通過分佈式快照技術CheckPoints實現狀態的持久化維護,使得在系統即使在停機或者異常的情況下都能正確的進行狀態恢復,從而保證在任何時間都能計算出正確的結果。

數據架構的演變過程,伴隨著技術的不斷迭代更新,Flink具有先進的架構理念,以及諸多的優秀特性,以及完善的編程接口,而Flink也在每一次的Release版本中,不斷推出新的特性。

例如Queryable State功能的提出,將直接容許用戶通過遠程的方式直接獲取流式計算任務的狀態信息,也就是說數據不需要落地數據庫就能直接從流式應用中直接查詢出,對於實時交互式的查詢業務可以直接從Flink的狀態中查詢最新的結果,當然這個功能目前還屬於Beta版本,但是相信在不久的未來,會變得越來越完善,那時Flink將不僅作為實時流式處理的框架,更多的可能會成為一套實時的存儲引擎,會讓更多的用戶從有狀態計算的技術中獲取收益。

為什麼Flink會成為下一代大數據處理框架的標準

  • 同時支持高吞吐、低延遲、高性能

Flink是一套集高吞吐,低延遲,高性能三者於一身的分佈式流式數據處理框架。

非常成熟的計算框架Apache Spark也只能兼顧高吞吐和高性能特性,在Spark Streaming流式計算中無法做到低延遲保障;而Apache Storm只能支持低延遲和高性能特性,但是無法滿足高吞吐的要求。而對於滿足高吞吐,低延遲,高性能這三個目標對分佈式流式計算框架是非常重要的。

  • 支持事件時間(Event Time)概念

在流式計算領域中,窗口計算的地位舉足輕重,但目前大多數計算框架窗口計算所採用的都是系統時間(Process Time),也是事件傳輸到計算框架處理時,系統主機的當前時間,Flink能夠支持基於事件時間(Event Time)語義的進行窗口計算,就是使用事件產生的時間,這種時間機制使得事件即使無序到達甚至延遲到達,數據流都能夠計算出精確的結果,同時保持了事件原本產生時的在時間維度的特點,而不受網絡傳輸或者計算框架的影響。

  • 支持有狀態計算

Flink在1.4版本中實現了狀態管理,所謂狀態就是在流式計算過程中將算子的中間結果數據的保存在內存或者DB中,等下一個事件進入接著從狀態中獲取中間結果進行計算,從而無需基於全部的原始數據統計結果,這種做法極大地提升了系統的性能,同時也降低了計算過程的耗時。

對於數據量非常大且邏輯運算非常複雜的流式運算,基於狀態的流式計算則顯得非常使用。

  • 支持高度靈活的窗口(Window)操作

在流處理應用中,數據是連續不斷的,需要通過窗口的方式對流數據進行一定範圍的聚合計算,例如統計在過去的1分鐘內有多少用戶點擊了某一網頁,在這種情況下,我們必須定義一個窗口,用來收集最近一分鐘內的數據,並對這個窗口內的數據再進行計算。

Flink將窗口劃分為基於Time、Count、Session,以及Data-driven等類型的窗口操作,窗口能夠用靈活的觸發條件定製化從而達到對複雜的流傳輸模式的支持,不同的窗口操作應用能夠反饋出真實事件產生的情況,用戶可以定義不同的窗口觸發機制來滿足不同的需求。

為什麼Flink會成為下一代大數據處理框架的標準

  • 基於輕量級分佈式快照(Snapshot)實現的容錯

Flink能夠分佈式運行在上千個節點之上,將一個大型計算的流程拆解成小的計算過程,然後將計算過程分佈到單臺並行節點上進行處理。

在任務執行過程中,能夠自動的發現事件處理過程中的錯誤而導致數據不一致的問題,常見的錯誤類型例如:節點宕機,或者網路傳輸問題,或是由於用戶因為升級或修復問題而導致計算服務重啟等。

在這些情況下,通過基於分佈式快照技術的Checkpoints,將執行過程中的任務信息進行持久化存儲,一旦任務出現異常宕機,Flink能夠進行任務的自動恢復,從而確保數據在處理過程中的一致性。

  • 基於JVM實現獨立的內存管理

內存管理是每套計算框架需要重點考慮的領域,尤其對於計算量比較大的計算場景,數據在內存中該如何進行管理,針對內存管理這塊,Flink實現了自身管理內存的機制,儘可能減少Full GC對系統的影響。

另外通過自定義序列化/反序列化方法將所有的對象轉換成二進制在內存中存儲,降低數據存儲的大小,更加有效的對內存空間進行利用,降低GC所帶來的性能下降或者任務停止的風險,同時提升了分佈式處理過數據傳輸的性能。

因此Flink較其他分佈式處理的框架則會顯得更加穩定,不會因為JVM GC等問題而導致整個應用宕機的問題。

  • Save Points(保存點)

對於7*24小時運行的流式應用,數據源源不斷的接入,在一段時間內應用的終止都有可能導致數據的丟失或者計算結果的不準確性,例如進行版本的升級,停機運維操作等,都能導致這種情況發生。

然而值得一提的是Flink通過其Save Points技術能夠將任務執行的快照(Snapshot)保存在存儲介質上,等待任務重啟的時候可以直接從實現保存的Save Points恢復原有的計算狀態,使得任務繼續按照停機之前的狀態繼續運行,Save Points技術可以讓用戶更好的管理和運維實時流式應用。

同時Flink除了上述的特性之外也具有其他非常優秀的特性,可以讓用戶有更多選擇。Flink具備非常多的優秀特性,這不僅讓Flink在社區的知名度越來越高,也吸引了眾多的企業參與研發和使用Flink這項技術。

關於作者:張利兵,資深架構師,流式計算領域專家,第四範式華東區AI項目架構師,原明略數據華東區大數據架構師。有多年大數據、流式計算方面的開發經驗,對Hadoop、Spark、Flink等大數據計算引擎有著非常深入的理解,積累了豐富的項目實踐經驗。

為什麼Flink會成為下一代大數據處理框架的標準

延伸閱讀《Flink原理、實戰與性能優化》

推薦語:從功能、原理、實戰和調優4個維度循序漸進講解利用Flink進行分佈式流式應用開發,指導讀者從零基礎入門到進階。適讀人群:流計算開發工程師、大數據架構工程師、大數據開發工程師、數據挖掘工程師、高校研究生以及高年級本科生。

相關推薦

推薦中...