spark與Flink對比

批流理念不同

spark準確的說是批處理,Spark streaming是微批處理,spark底層都依賴於RDD
flink是流式處理,批處理看做是有限的流處理

SQL

sparksql支持的更好
flink一般,在完善中

機器學習圖計算等

spark有mllib和graphx等模塊
flink比較薄弱

任務

spark,driver管理,Executor執行,通過RDD分區數和shuffle劃分stage和task,shuffle過程會有寫磁盤
flink,通過JobManager管理,通過TaskManager裏劃分的slot執行,每個算子可設置並行度

流式計算部分Flink有以下優點

  • 豐富的時間語義,支持 Event Time
  • 良好的亂序數據處理能力
  • 高度靈活的窗口,Flink 支持滾動窗口,滑動窗口,統計窗口,session 窗口,以及數據驅動的窗口
  • exactly-once 語義
  • 帶反壓的連續流模型,Flink streaming 在運行時有着天然的流控:慢的數據 sink 節點會反壓(backpressure)快的數據源(sources)
  • 完善的容錯機制
  • 批流api統一,且Api設計合理功能強大
  • 完善的狀態編程
  • 內存管理,Flink在 JVM 中實現了自己的內存管理。

總結

從成熟度來說spark生態更完善,flink比較新。如果是離線hive分析,推薦使用sparksql;機器學習等當然也是使用spark;其它業務,如果公司spark平臺比較是成熟可使用spark,對於低延時如反欺詐等實時場景可以使用flink;如果公司有相對成熟的flink平臺,流式計算使用flink是一個不錯的選擇,我反正是用過flink做實時計算之後就不想在用sparkstreaming和stucture streaming了;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章