82、Spark Streaming之與Storm的對比分析

Spark Streaming與Storm的對比

對比點 Storm Spark Streaming
實時計算模型 純實時,來一條數(shù)據(jù),處理一條數(shù)據(jù) 準(zhǔn)實時,對一個時間段內(nèi)的數(shù)據(jù)收集起來,作為一個RDD再處理
實時計算延遲度 毫秒級 秒級
吞吐量
事務(wù)機(jī)制 支持完善 支持,但不夠完善
健壯性/容錯性 Zookeeper,Acker,非常強(qiáng) Checkpoint,WAL,一般
動態(tài)調(diào)整并行度 支持 不支持

Spark Streaming與Storm的優(yōu)劣分析

事實上,Spark Streaming絕對談不上比Storm優(yōu)秀。這兩個框架在實時計算領(lǐng)域中,都很優(yōu)秀,只是擅長的細(xì)分場景并不相同。
Spark Streaming僅僅在吞吐量上比Storm要優(yōu)秀,而吞吐量這一點,也是歷來挺Spark Streaming,貶Storm的人著重強(qiáng)調(diào)的。但是問題是,是不是在所有的實時計算場景下,都那么注重吞吐量?不盡然。因此,通過吞吐量說Spark Streaming強(qiáng)于Storm,不靠譜。
事實上,Storm在實時延遲度上,比Spark Streaming就好多了,前者是純實時,后者是準(zhǔn)實時。而且,Storm的事務(wù)機(jī)制、健壯性 / 容錯性、動態(tài)調(diào)整并行度等特性,都要比Spark Streaming更加優(yōu)秀。
Spark Streaming,有一點是Storm絕對比不上的,就是:它位于Spark生態(tài)技術(shù)棧中,因此Spark Streaming可以和Spark Core、Spark SQL無縫整合,也就意味著,我們可以對實時處理出來的中間數(shù)據(jù),立即在程序中無縫進(jìn)行延遲批處理、交互式查詢等操作。這個特點大大增強(qiáng)了Spark Streaming的優(yōu)勢和功能。

Spark Streaming與Storm的應(yīng)用場景

對于Storm來說:

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

對于Spark Streaming來說:

  1. 如果對上述適用于Storm的三點,一條都不滿足的實時場景,即,不要求純實時,不要求強(qiáng)大可靠的事務(wù)機(jī)制,不要求動態(tài)調(diào)整并行度,那么可以考慮使用Spark Streaming
  2. 考慮使用Spark Streaming最主要的一個因素,應(yīng)該是針對整個項目進(jìn)行宏觀的考慮,即,如果一個項目除了實時計算之外,還包括了離線批處理、交互式查詢等業(yè)務(wù)功能,而且實時計算中,可能還會牽扯到高延遲批處理、交互式查詢等功能,那么就應(yīng)該首選Spark生態(tài),用Spark Core開發(fā)離線批處理,用Spark SQL開發(fā)交互式查詢,用Spark Streaming開發(fā)實時計算,三者可以無縫整合,給系統(tǒng)提供非常高的可擴(kuò)展性。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容