spark與flink的區別


(1)設計理念

  1、Spark的技術理念是使用微批來模擬流的計算,基於Micro-batch,數據流以時間為單位被切分為一個個批次,通過分布式數據集RDD進行批量處理,是一種偽實時。

  2、Flink是基於事件驅動的,是面向流的處理框架, Flink基於每個事件一行一行地流式處理,是真正的流式計算. 另外他也可以基於流來模擬批進行計算實現批處理。

(2)架構方面

  1、Spark在運行時的主要角色包括:Master、Worker、Driver、Executor。

  2、Flink 在運行時主要包含:Jobmanager、Taskmanager和Slot。

(3)任務調度

  1、Spark Streaming 連續不斷的生成微小的數據批次,構建有向無環圖DAG,根據DAG中的action操作形成job,每個job有根據窄寬依賴生成多個stage。

  2、Flink 根據用戶提交的代碼生成 StreamGraph,經過優化生成 JobGraph,然后提交給 JobManager進行處理,JobManager 會根據 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 調度最核心的數據結構,JobManager 根據 ExecutionGraph 對 Job 進行調度。

(4)時間機制

  1、Spark Streaming 支持的時間機制有限,只支持處理時間。使用processing time模擬event time必然會有誤差, 如果產生數據堆積的話,誤差則更明顯。

  2、flink支持三種時間機制:事件時間,注入時間,處理時間,同時支持 watermark 機制處理遲到的數據,說明Flink在處理亂序大實時數據的時候,更有優勢。

(5)容錯機制

  1、SparkStreaming的容錯機制是基於RDD的容錯機制,會將經常用的RDD或者對寬依賴加Checkpoint。利用SparkStreaming的direct方式與Kafka可以保證數據輸入源的,處理過程,輸出過程符合exactly once。

  2、Flink 則使用兩階段提交協議來保證exactly once。

(6)吞吐量與延遲

  1、spark是基於微批的,而且流水線優化做的很好,所以說他的吞入量是最大的,但是付出了延遲的代價,它的延遲是秒級;

  2、而Flink是基於事件的,消息逐條處理,而且他的容錯機制很輕量級,所以他能在兼顧高吞吐量的同時又有很低的延遲,它的延遲能夠達到毫秒級;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM