Flink為什麼比Spark快?大數據流處理的框架比較

大數據處理的新趨勢,流處理和批處理是非常重要的兩個概念,而基於流處理和批處理的大數據處理框架,Flink和Spark,也是常常被大家拿來做比較的對象。


而在實時流數據處理上,Flink性能似乎更加強勁,那麼Flink為什麼比Spark快呢,今天我們就來聊聊這個話題。


Flink為什麼比Spark快?大數據流處理的框架比較

Spark和Flink都是針對於實時數據處理的框架,並且兩者也都在實際的工作當中表現出色,但是如果要深究兩者在大數據處理的區別,我們需要從Spark和Flink的引擎技術開始講起。

Spark和Flink計算引擎,在處理大規模數據上,數據模型和處理模型有很大的差別。

Spark的數據模型是彈性分佈式數據集RDD(Resilient Distributed Datasets)。RDD可以實現為分佈式共享內存或者完全虛擬化(即有的中間結果RDD當下遊處理完全在本地時可以直接優化省略掉)。這樣可以省掉很多不必要的I/O,是早期Spark性能優勢的主要原因。

Spark用RDD上的變換(算子)來描述數據處理。每個算子(如map,filter,join)生成一個新的RDD。所有的算子組成一個有向無環圖(DAG)。這就是Spark進行數據處理的核心機制。

而Flink的基本數據模型,則是數據流,及事件(Event)的序列。數據流作為數據的基本模型,這個流可以是無邊界的無限流,即一般意義上的流處理。也可以是有邊界的有限流,這樣就是批處理。

Flink用數據流上的變換(算子)來描述數據處理。每個算子生成一個新的數據流。在算子,DAG,和上下游算子鏈接(chaining)這些方面,和Spark的基本思路是一樣的。

但是在在DAG的執行上,Spark和Flink有明顯的不同。

在Flink的流執行模式中,一個事件在一個節點處理完後的輸出就可以發到下一個節點立即處理。這樣執行引擎並不會引入額外的延遲。而Spark的micro batch和一般的batch執行一樣,處理完上游的stage得到輸出之後才開始下游的stage。

這也就是Flink為什麼比Spark快的原因之一。並且Flink在數據流計算執行時,還可以把多個事件一起進行傳輸和計算,進一步實現數據計算的低延遲。所以Flink之所以快,其實也可以理解為比Spark的延遲性更低。



分享到:


相關文章: