兩款高性能并行計算引擎Storm和Spark比較
來自http://blog.csdn.net/iefreer/article/details/32715153
Spark基于這樣的理念,當數據龐大時,把計算過程傳遞給數據要比把數據傳遞給計算過程要更富效率。每個節點存儲(或緩存)它的數據集,然后任務被提交給節點。
所以這是把過程傳遞給數據。這和Hadoop map/reduce非常相似,除了積極使用內存來避免I/O操作,以使得迭代算法(前一步計算輸出是下一步計算的輸入)性能更高。
Shark只是一個基于Spark的查詢引擎(支持ad-hoc臨時性的分析查詢)
而Storm的架構和Spark截然相反。Storm是一個分布式流計算引擎。每個節點實現一個基本的計算過程,而數據項在互相連接的網絡節點中流進流出。和Spark相反,這個是把數據傳遞給過程。
兩個框架都用于處理大量數據的并行計算。
Storm在動態處理大量生成的“小數據塊”上要更好(比如在推ter數據流上實時計算一些匯聚功能或分析)。
Spark工作于現有的數據全集(如Hadoop數據)已經被導入Spark集群,Spark基于in-memory管理可以進行快訊掃描,并最小化迭代算法的全局I/O操作。
不過Spark流模塊(Streaming Module)倒是和Storm相類似(都是流計算引擎),盡管并非完全一樣。
Spark流模塊先匯聚批量數據然后進行數據塊分發(視作不可變數據進行處理),而Storm是只要接收到數據就實時處理并分發。
不確定哪種方式在數據吞吐量上要具優勢,不過Storm計算時間延遲要小。
總結下,Spark和Storm設計相反,而Spark Steaming才和Storm類似,前者有數據平滑窗口(sliding window),而后者需要自己去維護這個窗口。