paulwong

          為什么 Storm 比 Hadoop 快?是由哪幾個(gè)方面決定的?

          首先要明白Storm和Hadoop的應(yīng)用領(lǐng)域,注意加粗、標(biāo)紅的關(guān)鍵字。

          Hadoop是基于Map/Reduce模型的,處理海量數(shù)據(jù)的離線分析工具。
          Storm是分布式的、實(shí)時(shí)數(shù)據(jù)流分析工具,數(shù)據(jù)是源源不斷產(chǎn)生的,例如Twitter的Timeline。

          再回到你說(shuō)的速度問(wèn)題,只能說(shuō)Storm更適用于實(shí)時(shí)數(shù)據(jù)流,Map/Reduce模型在實(shí)時(shí)領(lǐng)域很難有所發(fā)揮,不能簡(jiǎn)單粗暴的說(shuō)誰(shuí)快誰(shuí)慢。



          這里的快主要是指的時(shí)延。

          storm的網(wǎng)絡(luò)直傳、內(nèi)存計(jì)算,其時(shí)延必然比hadoop的通過(guò)hdfs傳輸?shù)偷枚啵划?dāng)計(jì)算模型比較適合流式時(shí),storm的流式處理,省去了批處理的收集數(shù)據(jù)的時(shí)間;因?yàn)閟torm是服務(wù)型的作業(yè),也省去了作業(yè)調(diào)度的時(shí)延。所以從時(shí)延上來(lái)看,storm要快于hadoop。

          說(shuō)一個(gè)典型的場(chǎng)景,幾千個(gè)日志生產(chǎn)方產(chǎn)生日志文件,需要進(jìn)行一些ETL操作存入一個(gè)數(shù)據(jù)庫(kù)。

          假設(shè)利用hadoop,則需要先存入hdfs,按每一分鐘切一個(gè)文件的粒度來(lái)算(這個(gè)粒度已經(jīng)極端的細(xì)了,再小的話hdfs上會(huì)一堆小文件),hadoop開始計(jì)算時(shí),1分鐘已經(jīng)過(guò)去了,然后再開始調(diào)度任務(wù)又花了一分鐘,然后作業(yè)運(yùn)行起來(lái),假設(shè)機(jī)器特別多,幾鈔鐘就算完了,然后寫數(shù)據(jù)庫(kù)假設(shè)也花了很少的時(shí)間,這樣,從數(shù)據(jù)產(chǎn)生到最后可以使用已經(jīng)過(guò)去了至少兩分多鐘。

          而流式計(jì)算則是數(shù)據(jù)產(chǎn)生時(shí),則有一個(gè)程序去一直監(jiān)控日志的產(chǎn)生,產(chǎn)生一行就通過(guò)一個(gè)傳輸系統(tǒng)發(fā)給流式計(jì)算系統(tǒng),然后流式計(jì)算系統(tǒng)直接處理,處理完之后直接寫入數(shù)據(jù)庫(kù),每條數(shù)據(jù)從產(chǎn)生到寫入數(shù)據(jù)庫(kù),在資源充足時(shí)可以在毫秒級(jí)別完成。


          當(dāng)然,跑一個(gè)大文件的wordcount,本來(lái)就是一個(gè)批處理計(jì)算的模型,你非要把它放到storm上進(jìn)行流式的處理,然后又非要讓等所有已有數(shù)據(jù)處理完才讓storm輸出結(jié)果,這時(shí)候,你再把它和hadoop比較快慢,這時(shí),其實(shí)比較的不是時(shí)延,而是比較的吞吐了。



          Hadoop M/R基于HDFS,需要切分輸入數(shù)據(jù)、產(chǎn)生中間數(shù)據(jù)文件、排序、數(shù)據(jù)壓縮、多份復(fù)制等,效率較低。

          Storm 基于ZeroMQ這個(gè)高性能的消息通訊庫(kù),不持久化數(shù)據(jù)。

          posted on 2013-09-08 18:12 paulwong 閱讀(384) 評(píng)論(0)  編輯  收藏 所屬分類: LOG ANALYST BIG DATA SYSTEM

          主站蜘蛛池模板: 永寿县| 娱乐| 阳江市| 无为县| 喀什市| 兴仁县| 沅江市| 永昌县| 荣昌县| 南江县| 尤溪县| 余姚市| 阜康市| 青铜峡市| 金阳县| 龙海市| 周宁县| 澄江县| 祁门县| 璧山县| 南城县| 庆阳市| 庆元县| 南康市| 闽侯县| 焦作市| 浦北县| 和平县| 普宁市| 六盘水市| 盐池县| 雷山县| 洛隆县| 鲁山县| 郴州市| 南宫市| 昭通市| 晋州市| 大姚县| 绥中县| 洛川县|