Storm擅長於動態處理大量實時生產的小數據塊,概念上是將小數據量的數據源源不斷傳給過程;
Spark擅長對現有的數據全集做處理,概念是將過程傳給大數據量的數據。
二者設計思路相反。Storm側重於處理的實時性,Spark側重處理龐大數據(類似於Hadoop的MR)。
Spark流模塊(Spark Streaming)與Storm類似,但有區別:
1.Storm純實時,來一條數據,處理一條數據;SparkStreaming准實時,對一個時間段內的數據收集起來,作為一個RDD,再做處理。
2.Storm響應時間毫秒級;Spark Streaming響應時間秒級
3.Storm可以動態調整並行度;SparkStreaming不行
Storm應用場景:
1、對於需要純實時,不能忍受1秒以上延遲的場景
2、要求可靠的事務機制和可靠性機制,即數據的處理完全精准
3、如果還需要針對高峰低峰時間段,動態調整實時計算程序的並行度,以最大限度利用集群資源
Spark Streaming應用場景:
1、Spark Streaming可以和Spark Core、Spark SQL無縫整合,如果一個項目除了實時計算之外,還包括了離線批處理、交互式查詢等業務功能,考慮使用Spark Streaming。