Storm 最火的流式處理框架

2022-11-11 16:42:03 字數 4133 閱讀 3879

在2023年storm開源之前,由於hadoop的火紅,整個業界都在喋喋不休地談論大資料。hadoop的高吞吐,海量資料處理的能力使得人們可以方便地處理海量資料。但是,hadoop的缺點也和它的優點同樣鮮明——延遲大,響應緩慢,運維複雜。

誕生在2023年storm開源之前,由於hadoop的火紅,整個業界都在喋喋不休地談論大資料。hadoop的高吞吐,海量資料處理的能力使得人們可以方便地處理海量資料。但是,hadoop的缺點也和它的優點同樣鮮明——延遲大,響應緩慢,運維複雜。

有需求也就有創造,在hadoop基本奠定了大資料霸主地位的時候,很多的開源專案都是以彌補hadoop的實時性為目標而被創造出來。而在這個節骨眼上storm橫空出世了。

storm帶著流式計算的標籤華麗麗滴出場了,看看它的一些賣點:

分布式系統:可橫向拓展,現在的專案不帶個分布式特性都不好意思開源。

運維簡單:storm的部署的確簡單。雖然沒有mongodb的解壓即用那麼簡單,但是它也就是多安裝兩個依賴庫而已。

高度容錯:模組都是無狀態的,隨時宕機重啟。

無資料丟失:storm創新性提出的ack訊息追蹤框架和複雜的事務性處理,能夠滿足很多級別的資料處理需求。不過,越高的資料處理需求,效能下降越嚴重。

多語言:實際上,storm的多語言更像是臨時新增上去似的。因為,你的提交部分還是要使用j**a實現。

下面,我們簡單地認識一下storm這個產品。

認識storm是乙個免費開源、分布式、高容錯的實時計算系統。storm令持續不斷的流計算變得容易,彌補了hadoop批處理所不能滿足的實時要求。storm經常用於在實時分析、**機器學習、持續計算、分布式遠端呼叫和etl等領域。

storm的部署管理非常簡單,而且,在同類的流式計算工具,storm的效能也是非常出眾的。

storm主要分為兩種元件nimbus和supervisor。這兩種元件都是快速失敗的,沒有狀態。任務狀態和心跳資訊等都儲存在zookeeper上的,提交的**資源都在本地機器的硬碟上。

nimbus負責在集群裡面傳送**,分配工作給機器,並且監控狀態。全域性只有乙個。supervisor會監聽分配給它那台機器的工作,根據需要啟動/關閉工作程序worker。

每乙個要執行storm的機器上都要部署乙個,並且,按照機器的配置設定上面分配的槽位數。

zookeeper是storm重點依賴的外部資源。nimbus和supervisor甚至實際執行的worker都是把心跳儲存在zookeeper上的。nimbus也是根據zookeerper上的心跳和任務執行狀況,進行排程和任務分配的。

storm提交執行的程式稱為topology。

topology處理的最小的訊息單位是乙個tuple,也就是乙個任意物件的陣列。

topology由spout和bolt構成。spout是發出tuple的結點。bolt可以隨意訂閱某個spout或者bolt發出的tuple。

spout和bolt都統稱為component。

下圖是乙個topology設計的邏輯圖的例子。

下圖是topology的提交流程圖。

下圖是storm的資料互動圖。可以看出兩個模組nimbus和supervisor之間沒有直接互動。狀態都是儲存在zookeeper上。worker之間通過zeromq傳送資料。

雖然,有些地方做得還是不太好,例如,底層使用的zeromq不能控制記憶體使用(下個release版本,引入了新的訊息機制使用netty代替zeromq),多語言支援更多是噱頭,nimbus還不支援ha。但是,就像當年的hadoop那樣,很多公司選擇它是因為它是唯一的選擇。而這些先期使用者,反過來促進了storm的發展。

發展storm已經發展到0.8.2版本了,看一下兩年多來,它取得的成就:

有50個大大小小的公司在使用storm,相信更多的不留名的公司也在使用。這些公司中不乏**,百度,twitter,groupon,雅虎等重量級公司。

從開源時候的0.5.0版本,到現在的0.8.0+,和即將到來的0.9.0+。先後新增了以下重大的新特性:

o使用kryo作為tuple序列化的框架(0.6.0)

o新增了transactional topologies(事務性拓撲)的支援(0.7.0)o新增了trident的支援(0.

8.0)o引入netty作為底層訊息機制(0.9.

0)transactional topologies和trident都是針對實際應用中遇到的重複計數問題和應用性問題的解決方案。可以看出,實際的商用給予了storm很多良好的反饋。

在github上超過4000個專案負責人。storm整合了許多庫,支援包括kestrel、kafka、jms、cassandra、memcached以及更多系統。隨著支援的庫越來越多,storm更容易與現有的系統協作。

storm的擁有乙個活躍的社群和一群熱心的貢獻者。過去兩年,storm的發展是成功的。

當前storm被廣泛應用於實時分析,**機器學習,持續計算、分布式遠端呼叫等領域。來看一些實際的應用:

一淘-實時分析系統pora:實時分析使用者的屬性,並反饋給搜尋引擎。最初,使用者屬性分析是通過每天在雲梯上定時執行的mr job來完成的。

為了滿足實時性的要求,希望能夠實時分析使用者的行為日誌,將最新的使用者屬性反饋給搜尋引擎,能夠為使用者展現最貼近其當前需求的結果。

攜程-**效能監控:實時分析系統監控攜程網的**效能。利用html5提供的performance標準獲得可用的指標,並記錄日誌。

storm集群實時分析日誌和入庫。使用drpc聚合成報表,通過歷史資料對比等判斷規則,觸發預警事件。

如果,業務場景中需要低延遲的響應,希望在秒級或者毫秒級完成分析、並得到響應,而且希望能夠隨著資料量的增大而拓展。那就可以考慮下,使用storm了。

試想下,如果,乙個遊戲新版本上線,有乙個實時分析系統,收集遊戲中的資料,運營或者開發者可以在上線後幾秒鐘得到持續不斷更新的遊戲監控報告和分析結果,然後馬上針對遊戲的引數

和平衡性進行調整。這樣就能夠大大縮短遊戲迭代週期,加強遊戲的生命力(實際上,zynga就是這麼幹的!雖然使用的不是 storm……zynga研發之道探秘:用資料說話)。

除了低延遲,storm的topology靈活的程式設計方式和分布式協調也會給我們帶來方便。使用者屬性分析的專案,需要處理大量的資料。使用傳統的mapreduce處理是個不錯的選擇。

但是,處理過程中有個步驟需要根據分析結果,採集網頁上的資料進行下一步的處理。這對於mapreduce來說就不太適用了。但是,storm的topology就能完美解決這個問題。

基於這個問題,我們可以畫出這樣乙個storm的topology的處理圖。

我們只需要實現每個分析的過程,而storm幫我們把訊息的傳送和接受都完成了。更加激動人心的是,你只需要增加某個bolt的並行度就能夠解決掉某個結點上的效能瓶頸。

未來在流式處理領域裡,storm的直接對手是s4。不過,s4冷淡的社群、半成品的**,在實際商用方面輸給storm不止一條街。

如果把範圍擴大到實時處理,storm就一點都不寂寞了。

puma:facebook使用puma和hbase相結合來處理實時資料,使批處理計算平台具備一定實時能力。 不過這不算是乙個開源的產品。只是內部使用。

hstreaming:。分商業版和免費版。也許hstreaming可以借hadoop的東風,撼動storm。

spark streaming:作為uc berkeley雲計算software stack的一部分,spark streaming是建立在spark上的應用框架,利用spark的底層框架作為其執行基礎,並在其上構建了dstream的行為抽象。利用 dstream所提供的api,使用者可以在資料流上實時進行count,join,aggregate等操作。

當然,storm也有yarn-storm專案,能讓storm執行在hadoop2.0的yarn框架上,可以讓hadoop的mapreduce和storm共享資源。

總結知乎上有乙個挺好的問答: 問:實時處理系統(類似s4, storm)對比直接用mq來做好處在**?

答:好處是它幫你做了: 1) 集群控制。

2) 任務分配。3) 任務分發 4) 監控等等。

需要知道storm不是乙個完整的解決方案。使用storm你需要加入訊息佇列做資料入口,考慮如何在流中儲存狀態,考慮怎樣將大問題用分布式去解決。解決這些問題的成本可能比增加乙個伺服器的成本還高。

但是,一旦下定決定使用了storm並解決了那些惱人的細節,你就能享受到storm給你帶來的簡單,可拓展等優勢了。

技術的發展日新月異,資料處理領域越來越多優秀的開源產品。storm的過去是成功的,將來會如何發展,我們拭目以待吧。

2023年最火的廣告牌

雜談2015年最火的廣告牌 老闆別哭 在西安郊外有乙個廣告牌 老闆別哭 這個命題新穎的廣告牌在網路上掀起了熱烈的討論,有的說是商家的 政策,有的說是一種營銷手段,甚至有的人說是一種公益廣告。給我印象最深的是對這個廣告牌的另一種解讀 每個月還能拿到工資的員工都應感謝你的老闆,尤其是這兩年。你也許不知道...

混凝土框架與砌體之間的裂縫原因與處理

2 混凝土框架與砌體之間的裂縫在混凝土框架與砌體之間產生的裂縫,主要原因是以下幾種裂縫 1 溼脹乾縮易產生變形裂縫。包括其它材料的燒結製品,其乾縮變形很小,且變形完成比較快。只要不使用新出窯的磚,一般不要考慮砌體本身的乾縮變形引起的附加應力。但對這類砌體在潮濕情況下會產生較大的溼脹,而且這種溼脹是不...

最火的高中畢業典禮上領導的講話發言稿參考

畢業又像乙個長長的省略號。青春散場,我們等待下一場開幕。高中時光只是人生旅途的乙個小小的驛站,下面是為大家整理出來的最火的高中畢業典禮上領導的講話發言稿參考篇 僅供參考,大家快過來看看吧 尊敬的各位領導,親愛的各位老師 同學們 大家好 今天非常榮幸,由我代表xx屆全體高三畢業生發表我們的畢業感言。青...