1. 程式人生 > >大數據Spark與Storm技術選型

大數據Spark與Storm技術選型

分享 filebeat bfd 大數 事務機制 有一點 zookeep 並行 bsp

技術分享圖片

先做一個對比:

對比點

Storm

Spark Streaming

實時計算模型

純實時,來一條數據,處理一條數據

準實時,對一個時間段內的數據收集起來,作為一個RDD,再處理

實時計算延遲度

毫秒級

秒級

吞吐量

事務機制

支持完善

支持,但不夠完善

健壯性 / 容錯性

ZooKeeper,Acker,非常強

Checkpoint,WAL,一般

動態調整並行度

支持

不支持

技術分享圖片

再來說說Spark Streaming與Storm的應用場景

技術分享圖片

先說一下Storm:


1、建議在那種需要純實時,不能忍受1秒以上延遲的場景下使用,比如實時金融系統,要求純實時進行金融交易和分析
2、此外,如果對於實時計算的功能中,要求可靠的事務機制和可靠性機制,即數據的處理完全精準,一條也不能多,一條也不能少,也可以考慮使用Storm
3、如果還需要針對高峰低峰時間段,動態調整實時計算程序的並行度,以最大限度利用集群資源(通常是在小型公司,集群資源緊張的情況),也可以考慮用Storm
4、如果一個大數據應用系統,它就是純粹的實時計算,不需要在中間執行SQL交互式查詢、復雜的transformation算子等,那麽用Storm是比較好的選擇

技術分享圖片

Spark 呢:


1、如果對上述適用於Storm的三點,一條都不滿足的實時場景,即,不要求純實時,不要求強大可靠的事務機制,不要求動態調整並行度,那麽可以考慮使用Spark Streaming
2、考慮使用Spark Streaming最主要的一個因素,應該是針對整個項目進行宏觀的考慮,即,如果一個項目除了實時計算之外,還包括了離線批處理、交互式查詢等業務功能,而且實時計算中,可能還會牽扯到高延遲批處理、交互式查詢等功能,那麽就應該首選Spark生態,用Spark Core開發離線批處理,用Spark SQL開發交互式查詢,用Spark Streaming開發實時計算,三者可以無縫整合,給系統提供非常高的可擴展性

Spark Streaming與Storm的優劣分析

事實上,Spark Streaming絕對談不上比Storm優秀。這兩個框架在實時計算領域中,都很優秀,只是擅長的細分場景並不相同。

Spark Streaming僅僅在吞吐量上比Storm要優秀,而吞吐量這一點,也是歷來挺Spark Streaming,貶Storm的人著重強調的。但是問題是,是不是在所有的實時計算場景下,都那麽註重吞吐量?不盡然。因此,通過吞吐量說Spark Streaming強於Storm,不靠譜。

事實上,Storm在實時延遲度上,比Spark Streaming就好多了,前者是純實時,後者是準實時。而且,Storm的事務機制、健壯性 / 容錯性、動態調整並行度等特性,都要比Spark Streaming更加優秀。

Spark Streaming,有一點是Storm絕對比不上的,就是:它位於Spark生態技術棧中,因此Spark Streaming可以和Spark Core、Spark SQL無縫整合,也就意味著,我們可以對實時處理出來的中間數據,立即在程序中無縫進行延遲批處理、交互式查詢等操作。這個特點大大增強了Spark Streaming的優勢和功能。

推薦閱讀:

Kafka 入門教程

你可以不懂但一定要知道的代碼審查 Code Review

ELK Stack 實戰教程

filebeat+kafka+strom+logstash+es 輿情采集系統

安全漏洞掃描,風險原因分析及解決方案

微信公眾號:

大數據Spark與Storm技術選型