Spark基於這樣的理念,當數據龐大時,把計算過程傳遞給數據要比把數據傳遞給計算過程要更富效率。每一個節點存儲(或緩存)它的數據集,而後任務被提交給節點。 算法
因此這是把過程傳遞給數據。這和Hadoop map/reduce很是類似,除了積極使用內存來避免I/O操做,以使得迭代算法(前一步計算輸出是下一步計算的輸入)性能更高。 緩存
Shark只是一個基於Spark的查詢引擎(支持ad-hoc臨時性的分析查詢) 網絡
而Storm的架構和Spark截然相反。Storm是一個分佈式流計算引擎。每一個節點實現一個基本的計算過程,而數據項在互相鏈接的網絡節點中流進流出。和Spark相反,這個是把數據傳遞給過程。 架構
兩個框架都用於處理大量數據的並行計算。 框架
Storm在動態處理大量生成的「小數據塊」上要更好(好比在Twitter數據流上實時計算一些匯聚功能或分析)。 分佈式
Spark工做於現有的數據全集(如Hadoop數據)已經被導入Spark集羣,Spark基於in-memory管理能夠進行快訊掃描,並最小化迭代算法的全局I/O操做。 oop
不過Spark流模塊(Streaming Module)卻是和Storm相相似(都是流計算引擎),儘管並不是徹底同樣。 性能
Spark流模塊先匯聚批量數據而後進行數據塊分發(視做不可變數據進行處理),而Storm是隻要接收到數據就實時處理並分發。 spa
不肯定哪一種方式在數據吞吐量上要具優點,不過Storm計算時間延遲要小。 設計
總結下,Spark和Storm設計相反,而Spark Steaming才和Storm相似,前者有數據平滑窗口(sliding window),然後者須要本身去維護這個窗口。