Flink 相比傳統的 Spark Streaming 區別?

這個問題是一個非常宏觀的問題,因爲兩個框架的不同點非常之多。但是在面試時有非 常重要的一點一定要回答出來:Flink 是標準的實時處理引擎,基於事件驅動。而 Spark Streaming 是微批(Micro-Batch)的模型。
下面我們就分幾個方面介紹兩個框架的主要區別:
  • 架構模型:Spark Streaming 在運行時的主要角色包括:MasterWorkerDriverExecutor, Flink 在運行時主要包:JobmanagerTaskmanager Slot
  • 任務調度:Spark Streaming 連續不斷的生成微小的數據批次,構建有向無環圖 DAG, Spark Streaming 會依次創DStreamGraphJobGeneratorJobSchedulerFlink 根據用戶 提交的代碼生成 StreamGraph,經過優化生成 JobGraph,然後提交給JobManager 進行處理, JobManager 會根據 JobGraph 生成 ExecutionGraphExecutionGraph Flink 調度最核心 的數據結構,JobManager 根據 ExecutionGraph Job 進行調度。
  • 時間機制:Spark Streaming 支持的時間機制有限,只支持處理時間。 Flink 支持了流 處理程序在時間上的三個定義:處理時間、事件時間、注入時間。同時也支持 watermark 機 制來處理滯後數據。
  • 容錯機制:對於 Spark Streaming 任務,我們可以設置 checkpoint,然後假如發生故障 並重啓,我們可以從上次 checkpoint 之處恢復,但是這個行爲只能使得數據不丟失,可能 會重複處理,不能做到恰好一次處理語義。Flink 則使用兩階段提交協議來解決這個問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章