天天看點

掃盲!為什麼說 Storm 比 Hadoop 快?

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

掃盲!為什麼說 Storm 比 Hadoop 快?

為什麼說 Storm 比 Hadoop 快?

“快”這個詞是不明确的,專業屬于點有兩個層面:1.時延 , 指資料從産生到運算産生結果的時間,題主的“快”應該主要指這個。2. 吞吐, 指系統機關時間處理的資料量。

首先明确一點,在消耗資源相同的情況下,一般來說storm的延時低于mapreduce。但是吞吐也低于mapreduce。storm的網絡直傳、記憶體計算,其時延必然比hadoop的通過hdfs傳輸低得多;當計算模型比較适合流式時,storm的流式處理,省去了批處理的收集資料的時間;因為storm是服務型的作業,也省去了作業排程的時延。是以從時延上來看,storm要快于hadoop。說一個典型的場景,幾千個日志生産方産生日志檔案,需要進行一些ETL操作存入一個資料庫。歡迎加入大資料學習交流分享群: 658558542   一起吹水交流學習(☛點選即可加入群聊)

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

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

當然,跑一個大檔案的wordcount,本來就是一個批處理計算的模型,你非要把它放到storm上進行流式的處理,然後又非要讓等所有已有資料處理完才讓storm輸出結果,這時候,你再把它和hadoop比較快慢,這時,其實比較的不是時延,而是比較的吞吐了。

storm是典型的流計算系統,mapreduce是典型的批處理系統。下面對流計算和批處理系統流程。

整個資料處理流程來說大緻可以分三個階段:

1. 資料采集與準備

2. 資料計算(涉及計算中的中間存儲), 題主中的“那些方面決定”應該主要是指這個階段處理方式。

3. 資料結果展現(回報)

1)資料采集階段,目前典型的處理處理政策:資料的産生系統一般出自頁面打點和解析DB的log,流計算将資料采集中消息隊列(比如kafaka,metaQ,timetunle)等。批處理系統一般将資料采集進分布式檔案系統(比如HDFS),當然也有使用消息隊列的。我們暫且把消息隊列和檔案系統稱為預處理存儲。二者在延時和吞吐上沒太大差別,接下來從這個預處理存儲進入到資料計算階段有很大的差別,流計算一般在實時的讀取消息隊列進入流計算系統(storm)的資料進行運算,批處理一系統一般會攢一大批後批量導入到計算系統(hadoop),這裡就有了時延的差別。

2)資料計算階段,流計算系統(storm)的時延低主要有一下幾個方面

A: storm 程序是常駐的,有資料就可以進行實時的處理

mapreduce 資料攢一批後由作業管理系統啟動任務,Jobtracker計算任務配置設定,tasktacker啟動相關的運算程序

B: stom每個計算單元之間資料之間通過網絡(zeromq)直接傳輸。

mapreduce map任務運算的結果要寫入到HDFS,在于reduce任務通過網絡拖過去運算。相對來說多了磁盤讀寫,比較慢

C: 對于複雜運算

storm的運算模型直接支援DAG(有向無環圖);mapreduce 需要肯多個MR過程組成,有些map操作沒有意義的。

3)資料結果展現

流計算一般運算結果直接回報到最終結果集中(展示頁面,資料庫,搜尋引擎的索引)。而mapreduce一般需要整個運算結束後将結果批量導入到結果集中。實際流計算和批處理系統沒有本質的差別,像storm的trident也有批概念,而mapreduce可以将每次運算的資料集縮小(比如幾分鐘啟動一次),facebook的puma就是基于hadoop做的流計算系統。

結語

感謝您的觀看,如有不足之處,歡迎批評指正。

如果有對大資料感興趣的小夥伴或者是從事大資料的老司機可以加群:

658558542    (☛點選即可加入群聊)

裡面整理了一大份學習資料,全都是些幹貨,包括大資料技術入門,海量資料進階分析語言,海量資料存儲分布式存儲,以及海量資料分析分布式計算等部分,送給每一位大資料小夥伴,這裡不止是小白聚集地,還有大牛線上解答!歡迎初學和進階中的小夥伴一起進群學習交流,共同進步!

最後祝福所有遇到瓶頸的大資料程式員們突破自己,祝福大家在往後的工作與面試中一切順利。