誕 生 在2011年Storm開源之前,由于Hadoop的火紅,整個業(yè)界都在喋喋不休地談?wù)摯髷?shù)據(jù)。Hadoop的高吞吐,海量數(shù)據(jù)處理的能力使得人們可以方便地處理海量數(shù)據(jù)。但是,Hadoop的缺點也和它的優(yōu)點同樣鮮明——延遲大,響應(yīng)緩慢,運維復(fù)雜。 有需求也就有創(chuàng)造,在Hadoop基本奠定了大數(shù)據(jù)霸主地位的時候,很多的開源項目都是以彌補Hadoop的實時性為目標(biāo)而被創(chuàng)造出來。而在這個節(jié)骨眼上Storm橫空出世了。 Storm帶著流式計算的標(biāo)簽華麗麗滴出場了,看看它的一些賣點:
認 識 Storm是一個免費開源、分布式、高容錯的實時計算系統(tǒng)。Storm令持續(xù)不斷的流計算變得容易,彌補了Hadoop批處理所不能滿足的實時要求。Storm經(jīng)常用于在實時分析、在線機器學(xué)習(xí)、持續(xù)計算、分布式遠程調(diào)用和ETL等領(lǐng)域。Storm的部署管理非常簡單,而且,在同類的流式計算工具,Storm的性能也是非常出眾的。 Storm主要分為兩種組件Nimbus和Supervisor。這兩種組件都是快速失敗的,沒有狀態(tài)。任務(wù)狀態(tài)和心跳信息等都保存在Zookeeper上的,提交的代碼資源都在本地機器的硬盤上。
下圖是一個Topology設(shè)計的邏輯圖的例子。 下圖是Topology的提交流程圖。 ![]() 下圖是Storm的數(shù)據(jù)交互圖??梢钥闯鰞蓚€模塊Nimbus和Supervisor之間沒有直接交互。狀態(tài)都是保存在Zookeeper上。Worker之間通過ZeroMQ傳送數(shù)據(jù)。
雖然,有些地方做得還是不太好,例如,底層使用的ZeroMQ不能控制內(nèi)存使用(下個release版本,引入了新的消息機制使用netty代替ZeroMQ),多語言支持更多是噱頭,Nimbus還不支持HA。但是,就像當(dāng)年的Hadoop那樣,很多公司選擇它是因為它是唯一的選擇。而這些先期使用者,反過來促進了Storm的發(fā)展。 發(fā) 展 Storm已經(jīng)發(fā)展到0.8.2版本了,看一下兩年多來,它取得的成就:
Transactional topologies和Trident都是針對實際應(yīng)用中遇到的重復(fù)計數(shù)問題和應(yīng)用性問題的解決方案。可以看出,實際的商用給予了Storm很多良好的反饋。
當(dāng) 前 Storm被廣泛應(yīng)用于實時分析,在線機器學(xué)習(xí),持續(xù)計算、分布式遠程調(diào)用等領(lǐng)域。來看一些實際的應(yīng)用:
我們只需要實現(xiàn)每個分析的過程,而Storm幫我們把消息的傳送和接受都完成了。更加激動人心的是,你只需要增加某個Bolt的并行度就能夠解決掉某個結(jié)點上的性能瓶頸。 未 來 在流式處理領(lǐng)域里,Storm的直接對手是S4。不過,S4冷淡的社區(qū)、半成品的代碼,在實際商用方面輸給Storm不止一條街。 如果把范圍擴大到實時處理,Storm就一點都不寂寞了。
總 結(jié) 知乎上有一個挺好的問答: 問:實時處理系統(tǒng)(類似s4, storm)對比直接用MQ來做好處在哪里? 答:好處是它幫你做了: 1) 集群控制。2) 任務(wù)分配。3) 任務(wù)分發(fā) 4) 監(jiān)控 等等。 需要知道Storm不是一個完整的解決方案。使用Storm你需要加入消息隊列做數(shù)據(jù)入口,考慮如何在流中保存狀態(tài),考慮怎樣將大問題用分布式去解決。解決這些問題的成本可能比增加一個服務(wù)器的成本還高。但是,一旦下定決定使用了Storm并解決了那些惱人的細節(jié),你就能享受到Storm給你帶來的簡單,可拓展等優(yōu)勢了。 技術(shù)的發(fā)展日新月異,數(shù)據(jù)處理領(lǐng)域越來越多優(yōu)秀的開源產(chǎn)品。Storm的過去是成功的,將來會如何發(fā)展,我們拭目以待吧。 后記 本文的重點是描述Storm的應(yīng)用場景和未來的發(fā)展前景,讓大家對Storm有一個初步的印象。如果,要落地使用的朋友,在網(wǎng)上可以找到很多優(yōu)秀的Storm的技術(shù)文章。例如:Storm的核心貢獻者徐明明的博客和淘寶關(guān)于storm的文章。 |
|