Spark Streaming與Storm的對比
對比點 | Storm | Spark Streaming |
---|---|---|
實時計算模型 | 純實時堰汉,來一條數(shù)據(jù)辽社,處理一條數(shù)據(jù) | 準實時,對一個時間段內(nèi)的數(shù)據(jù)收集起來翘鸭,作為一個RDD再處理 |
實時計算延遲度 | 毫秒級 | 秒級 |
吞吐量 | 低 | 高 |
事務(wù)機制 | 支持完善 | 支持滴铅,但不夠完善 |
健壯性/容錯性 | Zookeeper,Acker就乓,非常強 | Checkpoint汉匙,WAL拱烁,一般 |
動態(tài)調(diào)整并行度 | 支持 | 不支持 |
Spark Streaming與Storm的優(yōu)劣分析
事實上,Spark Streaming絕對談不上比Storm優(yōu)秀噩翠。這兩個框架在實時計算領(lǐng)域中戏自,都很優(yōu)秀,只是擅長的細分場景并不相同绎秒。
Spark Streaming僅僅在吞吐量上比Storm要優(yōu)秀浦妄,而吞吐量這一點,也是歷來挺Spark Streaming见芹,貶Storm的人著重強調(diào)的。但是問題是蠢涝,是不是在所有的實時計算場景下玄呛,都那么注重吞吐量?不盡然和二。因此徘铝,通過吞吐量說Spark Streaming強于Storm,不靠譜惯吕。
事實上惕它,Storm在實時延遲度上,比Spark Streaming就好多了废登,前者是純實時淹魄,后者是準實時。而且堡距,Storm的事務(wù)機制甲锡、健壯性 / 容錯性茶袒、動態(tài)調(diào)整并行度等特性弄慰,都要比Spark Streaming更加優(yōu)秀。
Spark Streaming疗涉,有一點是Storm絕對比不上的易稠,就是:它位于Spark生態(tài)技術(shù)棧中缸废,因此Spark Streaming可以和Spark Core、Spark SQL無縫整合驶社,也就意味著企量,我們可以對實時處理出來的中間數(shù)據(jù),立即在程序中無縫進行延遲批處理衬吆、交互式查詢等操作梁钾。這個特點大大增強了Spark Streaming的優(yōu)勢和功能。
Spark Streaming與Storm的應(yīng)用場景
對于Storm來說:
- 建議在那種需要純實時逊抡,不能忍受1秒以上延遲的場景下使用姆泻,比如實時金融系統(tǒng)零酪,要求純實時進行金融交易和分析
- 此外,如果對于實時計算的功能中拇勃,要求可靠的事務(wù)機制和可靠性機制四苇,即數(shù)據(jù)的處理完全精準,一條也不能多方咆,一條也不能少月腋,也可以考慮使用Storm
- 如果還需要針對高峰低峰時間段,動態(tài)調(diào)整實時計算程序的并行度瓣赂,以最大限度利用集群資源(通常是在小型公司榆骚,集群資源緊張的情況),也可以考慮用Storm
- 如果一個大數(shù)據(jù)應(yīng)用系統(tǒng)煌集,它就是純粹的實時計算妓肢,不需要在中間執(zhí)行SQL交互式查詢、復(fù)雜的transformation算子等苫纤,那么用Storm是比較好的選擇
對于Spark Streaming來說:
- 如果對上述適用于Storm的三點碉钠,一條都不滿足的實時場景,即卷拘,不要求純實時喊废,不要求強大可靠的事務(wù)機制,不要求動態(tài)調(diào)整并行度栗弟,那么可以考慮使用Spark Streaming
- 考慮使用Spark Streaming最主要的一個因素污筷,應(yīng)該是針對整個項目進行宏觀的考慮,即横腿,如果一個項目除了實時計算之外颓屑,還包括了離線批處理、交互式查詢等業(yè)務(wù)功能耿焊,而且實時計算中揪惦,可能還會牽扯到高延遲批處理、交互式查詢等功能罗侯,那么就應(yīng)該首選Spark生態(tài)器腋,用Spark Core開發(fā)離線批處理,用Spark SQL開發(fā)交互式查詢钩杰,用Spark Streaming開發(fā)實時計算纫塌,三者可以無縫整合,給系統(tǒng)提供非常高的可擴展性讲弄。