Hadoop Storm Spark比較

迅800發表於2017-05-31

Hadoop

  • Hadoop是磁碟級計算,進行計算時,資料在磁碟上,需要讀寫磁碟;

    Hadoop M/R基於HDFS,需要切分輸入資料、產生中間資料檔案、排序、資料壓縮、多份複製等,效率較低。

    假設利用hadoop,則需要先存入hdfs,按每一分鐘切一個檔案的粒度來算(這個粒度已經極端的細了,再小的話hdfs上會一堆小檔案),hadoop開始計算時,1分鐘已經過去了,然後再開始排程任務又花了一分鐘,然後作業執行起來,假設機器特別多,幾鈔鍾就算完了,然後寫資料庫假設也花了很少的時間,這樣,從資料產生到最後可以使用已經過去了至少兩分多鐘。

Strom

  • Storm是記憶體級計算,資料直接通過網路匯入記憶體,磁碟訪問延遲約為記憶體訪問延遲的75000倍;

    storm的網路直傳、記憶體計算,其時延必然比hadoop的通過hdfs傳輸低得多;當計算模型比較適合流式時,storm的流式處理,省去了批處理的收集資料的時間;因為storm是服務型的作業,也省去了作業排程的時延。所以從時延上來看,storm要快於hadoop。

    流式計算是資料產生時,則有一個程式去一直監控日誌的產生,產生一行就通過一個傳輸系統發給流式計算系統,然後流式計算系統直接處理,處理完之後直接寫入資料庫,每條資料從產生到寫入資料庫,在資源充足時可以在毫秒級別完成。

  • Storm 基於ZeroMQ這個高效能的訊息通訊庫,不持久化資料;

=====================
兩者面向的領域也不完全相同,一個是批量處理,基於任務排程的;另外一個是實時處理,基於流。
以水為例,Hadoop可以看作是純淨水,一桶桶地搬;而Storm是用水管,預先接好(Topology),然後開啟水龍頭,水就源源不斷地流出來了

Spark


備註

註釋:
1. 延時 , 指資料從產生到運算產生結果的時間,“快”應該主要指這個。
2. 吞吐, 指系統單位時間處理的資料量。

相關文章