Hadoop、Storm和spark的區別
hadoop、storm和spark的區別、比較
一、hadoop、Storm該選哪一個?
為了區別hadoop和Storm,該部分將回答如下問題:1.hadoop、Storm各是什麼運算2.Storm為什麼被稱之為流式計算系統3.hadoop適合什麼場景,什麼情況下使用hadoop4.什麼是吞吐量首先整體認識:Hadoop是磁碟級計算,進行計算時,資料在磁碟上,需要讀寫磁碟;Storm是記憶體級計算,資料直接通過網路匯入記憶體。讀寫記憶體比讀寫磁碟速度快n個數量級。根據Harvard CS61課件,磁碟訪問延遲約為記憶體訪問延遲的75000倍。所以Storm更快。註釋:1. 延時 , 指資料從產生到運算產生結果的時間,“快”應該主要指這個。
· Hadoop M/R基於HDFS,需要切分輸入資料、產生中間資料檔案、排序、資料壓縮、多份複製等,效率較低。
· Storm 基於ZeroMQ這個高效能的訊息通訊庫,不持久化資料。
為什麼storm比hadoop快,下面舉一個應用場景說一個典型的場景,幾千個日誌生產方產生日誌檔案,需要進行一些
二、高效能平行計算引擎Storm和Spark比較
Spark基於這樣的理念,當資料龐大時,把計算過程傳遞給資料要比把資料傳遞給計算過程要更富效率。每個節點儲存(或快取)它的資料集,然後任務被提交給節點。
所以這是把過程傳遞給資料。這和Hadoop map/reduce非常相似,除了積極使用記憶體來避免I/O操作,以使得迭代演算法(前一步計算輸出是下一步計算的輸入)效能更高。
Shark只是一個基於Spark的查詢引擎(支援ad-hoc臨時性的分析查詢)
而Storm的架構和Spark截然相反。Storm是一個分散式流計算引擎。每個節點實現一個基本的計算過程,而資料項在互相連線的網路節點中流進流出。和Spark相反,這個是把資料傳遞給過程。
兩個框架都用於處理大量資料的平行計算。
Storm在動態處理大量生成的“小資料塊”上要更好(比如在Twitter資料流上實時計算一些匯聚功能或分析)。
Spark工作於現有的資料全集(如Hadoop資料)已經被匯入Spark叢集,Spark基於in-memory管理可以進行快訊掃描,並最小化迭代演算法的全域性I/O操作。
不過Spark流模組(Streaming Module)倒是和Storm相類似(都是流計算引擎),儘管並非完全一樣。
Spark流模組先匯聚批量資料然後進行資料塊分發(視作不可變資料進行處理),而Storm是隻要接收到資料就實時處理並分發。
不確定哪種方式在資料吞吐量上要具優勢,不過Storm計算時間延遲要小。
總結下,Spark和Storm設計相反,而Spark Steaming才和Storm類似,前者有資料平滑視窗(sliding window),而後者需要自己去維護這個視窗。