1. Storm是什麼:編程
Storm簡單來講,就是分佈式實時計算系統。服務器
按照storm做者的說法,storm對於實時計算的意義相似於hadoop 對於批處理的意義 。網絡
2. Storm的主要特色:
架構
1.簡單的編程模型。相似於Map Reduce下降了並行批處理複雜性,Storm下降了進行實時處理的複雜性。
2.可使用各類編程語言。你能夠在Storm之上使用各類編程語言。默認支持C lojure、Java、Ruby和Python。框架
要增長對其餘語言的支持,只需實現一個簡單的Storm通訊協議便可。
3.容錯性。Storm會管理工做進程和節點的故障。
4.水平擴展。計算是在多個線程、進程和服務器之間並行進行的。
5.可靠的消息處理。Storm保證每一個消息至少能獲得一次完整處理。任務失敗時,它會負責從消息源重試消息。
6.快速。系統的設計保證了消息能獲得快速的處理。
7.本地模式。Storm有一個「本地模式」,能夠在處理過程當中徹底模擬Storm集羣。這讓你能夠快速進行開發和單元測試。編程語言
2. Storm與Spark、Hadoop的比較:
對比Hadoop的批處理,Storm是個實時的、分佈式以及具有高容錯的計算系統。同Hadoop同樣Storm也能夠處理大批量的數據,分佈式
然而Storm在保證高可靠性的前提下還可讓處理進行的更加實時;也就是說,全部的信息都會被處理。ide
Storm一樣還具有容錯和分佈計算這些特性,這就讓Storm能夠擴展到不一樣的機器上進行大批量的數據處理。
oop
storm的網絡直傳、內存計算,其時延必然比 hdfs傳輸低得多;當計算模型比較適合流式時,storm的流式處理,性能
省去了批處理的收集數據的時間;由於storm是服務型的做業,也省去了做業調度的時延。因此從時延上來看,
storm要快於hadoop。
比較:hadoop是磁盤級計算,進行計算時,數據在磁盤上,須要讀寫磁盤;
Storm是內存級計算,數據直接經過網絡導入內存。讀寫內存比讀寫磁盤速度快n個數量級。
使用領域不一樣,一個是批量處理,基於任務調度的;另一個是實時處理,基於流。
從原理角度來說:
1. hadoop M/R基於HDFS,須要切分輸入數據、產生中間數據文件、排序、數據壓縮、多份複製等,效率較低。
2. Storm 基於Zero M Q這個高性能的消息通信庫,不持久化數據。
storm的適用場景:
1. 流數據處理。Storm能夠用來處理源源不斷流進來的消息,處理以後將結果寫入到某個存儲中去。
2. 布式rpc。因爲storm的處理組件是分佈式的,並且處理延遲極低,因此能夠做爲一個通用的分佈式框架來使用。
固然,其實咱們的搜索引擎自己也是一個分佈式rpc系統。
應用:storm被普遍用來進行實時日誌處理,出如今實時統計、實時風控、實時推薦等場景中。
在淘寶個性化搜索實時分析項目中,使用timetunnel + hbase + storm + ups的架構,天天可處理幾十億的用戶日誌信息,
從用戶行爲發生到完成分析延遲在秒級。