為什麼 Storm 比 Hadoop 快?是由哪幾個方面決定的?

時間 2021-05-29 22:44:48

1樓:追風箏的人

問的不對。

storm是計算框架,hadoop是分布式儲存。

storm和mr比較才有意義

原因很多啊,storm是流式計算(拓撲-spout-bolt),只能計算簡單的邏輯,常駐記憶體,中間訊息不落地,ack機制如果要求不嚴格就更快了。

mr首先是批量的計算,可以計算複雜的邏輯,每次計算都需要申請資源(網路IO以及AM的申請等等),中間檔案還得落地磁碟(磁碟IO),預設的排序,以及中間的shuffle階段,merge階段等等。。。

應用場景沒得比較,沒有快慢之說

2樓:喜羊羊

這本來就是乙個偽命題,Storm和Hadoop是包含的關係,他倆不具備可比性。

Hadoop傾向於大資料的代名詞,它包含一整套的資料處理解決方案,包括儲存(HDFS、Hive、HBase等)和計算(MapReduce、Spark、Storm)。

Storm只是Hadoop中計算層面裡的乙個分支,能跟他進行比較的是Spark和MapReduce。

3樓:李賈

他倆根本就不是不同範疇的事物,如何比較? 這這問題就好比是問linux和oracle哪個更快?這完全沒法比嘛。

hadoop是幹什麼的?簡單來說它的設計目的是資料探勘的應用場景。舉個例子你有乙個乙個log檔案,有10億行,每一行有1k,總共1t大小,你想用正規表示式grep出其中滿足條件的行並取其中某個字段求和,如果在單台PC上,這個命令可能要跑幾天甚至更久,更有可能,這個任務根本完不成,因為任何乙個錯誤就會導致整個任務失敗。

這個時候,就有人想出來解決方案——把這個大檔案拆成很多的小檔案,分別存到幾百台計算機上,再在這幾百台計算機上同時跑任務再把計算結果加起來,即使個別任務失敗了,沒關係,把這個任務再跑一遍就是了,這樣可能幾分鐘就搞定了。於是hadoop就被搞出來了。

那storm又是幹啥的呢?假如你需要服務,同時有成千上萬的使用者需要同時訪問這個服務,大家都需要在很短的時間內拿到結果,顯然單台pc是沒辦法完成任務了,咋整? 於是有人又想到了, 我部署乙個服務集群負載均衡不就好了?

但假如你有一大堆這樣的服務,而且每個服務平常負載一般,但在peak時併發量奇高呢?你這系統複雜度不得指數級增長啊! 於是就有人搞出來一套描述語言,絕大部分應用都可以通過這套描述語言將一些通用功能組合起來實現,然後在同乙個集群上完成不同的服務功能,你看這就是storm了。

4樓:Hunting

做個搬運工:

簡單翻譯一下,大資料處理有兩個領域,乙個是批處理,乙個是實時處理。簡單來說,批處理就好比是白天資料量特別多,來不及處理,先存起來,晚上慢慢處理,確保當天能處理完當天的資料量。實時處理就是使用者併發有大量的資料,這些資料則是必須及時處理並返回結果的。

所以機制就不太一樣。

storm 針對實時處理,hadoop針對批處理。你直接比較快慢。我覺得這不合適。也沒法回答。

5樓:Frank 李先生

@kenny 的水的例子很形象,我再發揮一下。例如給純淨水消毒需要經過27道工序,hadoop差不多是每一道工序都把桶裝水倒出來消毒,完了再裝回去,下一道工序再倒出來;而storm相當於把水倒入管道中,流經不同的消毒池,完成所有工序,然後再流回桶裡。所以storm比hadoop快,尤其是需要多次迭代的場景,不用每次都把中間資料寫回磁碟。

差點看成spark的問題,最近拿spark和hadoop比的問題太多了。

6樓:徐小天

說storm快的為何都忽略了取資料這個過程,大資料分析這個取資料過程很關鍵,取資料磁碟網路頻寬都有限制;若說資料已經拿回來計算MR中間會有大量回寫磁碟的操作,速度肯定上不來,這是storm必定快

7樓:劉從新

兩者屬於不同的計算正規化,批處理v.s.實時,不存在可比性。

相反,對於乙個大型的大資料系統,要兼顧批處理和實時性要求,在架構上會將Hadoop和Storm結合起來。在Storm主工程師Nathan Marz的Big Data一書中,有介紹。

8樓:

MapReduce是批處理,先準備好資料,再進行處理,期間還有磁碟會參與運算,比較適合大量資料的離線處理。

Storm整個計算都在記憶體中完成,不需要任何磁碟參與,所以十分適合實時計算。

9樓:王旻

其實@張云聰 的回答已經說明了原因。

這裡再次強調根本原因,Hadoop是磁碟級計算,進行計算時,資料在磁碟上,需要讀寫磁碟;Storm是記憶體級計算,資料直接通過網路匯入記憶體。讀寫記憶體比讀寫磁碟速度快n個數量級。根據Harvard CS61課件,磁碟訪問延遲約為記憶體訪問延遲的75000倍。

所以Storm更快。

10樓:張云聰

這裡的快主要是指的時延

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

說乙個典型的場景,幾千個日誌生產方產生日誌檔案,需要進行一些ETL操作存入乙個資料庫。

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

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

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

11樓:Coder4

首先要明白Storm和Hadoop的應用領域,注意加粗、標紅的關鍵字。

Hadoop是基於Map/Reduce模型的,處理海量資料的離線分析工具。

Storm是分布式的、實時資料流分析工具,資料是源源不斷產生的,例如Twitter的Timeline。

再回到你說的速度問題,只能說Storm更適用於實時資料流,Map/Reduce模型在實時領域很難有所發揮,不能簡單粗暴的說誰快誰慢。

12樓:kenny

最主要的方面:Hadoop使用磁碟作為中間交換的介質,而storm的資料是一直在記憶體中流轉的。

兩者面向的領域也不完全相同,乙個是批量處理,基於任務排程的;另外乙個是實時處理,基於流。

以水為例,Hadoop可以看作是純淨水,一桶桶地搬;而Storm是用水管,預先接好(Topology),然後開啟水龍頭,水就源源不斷地流出來了。

MPP 與 Hadoop是什麼關係?

題主的問題中涉及幾個不同層次的概念,我來試著捋清楚一下 1.先從體系架構上說一下NUMA和 MPP的區別和聯絡 和NUMA對應的SMP,它是為了更好地scale SMP而設計,內部有多個CPU模組 每個模組有多個CPU 每個模組有本地的記憶體,但是各個CPU也可以訪問其它模組的記憶體,當然,訪問本模...

為什麼說Hadoop是乙個生態系統?

富貴竹 Hadoop的hdfs是乙個基礎,在此基礎上衍生出Hbase,hive,spark,hue等解決不同問題的元件,這些元件合在一起就組成了乙個生態系統。在這個系統內能夠滿足不同使用者的不同需求,所以目前都說hadoop是乙個生態系統。 青牛 生態系統,顧名思義就是很多元件組成的乙個生態鏈,經過...

為什麼遊戲伺服器很少用Hadoop和MapReduce?

圓胖腫 遊戲公司有不少用hbase的 不過這兩個東西不是應用伺服器 而是資料處理引擎 廣義的hadoop包含了很多東西 這一套最大的特點不是realtime處理 而是如何將非結構化資料處理得跟結構化資料一樣簡單遊戲領域應用更接近realtime處理 vertx在這個領域將會有巨大作用,我們已經實現了...