storm的基礎介紹_數據分析_大數據

一、簡要介紹
       對於大數據的處理,在離線方面,Hadoop很完美地解決了,對於實時數據的處理則無能爲力。
       Storm是一個開源的分佈式實時計算系統,可以簡單、可靠地處理大量的數據流。
       Storm有很多使用場景,如實時分析、在線機器學習、持續計算、分佈式RPC、ETL等。
       Storm支持水平擴展,具有高容錯性,保證每個消息都會得到處理,而且處理速度很快(在一個小集羣中,每個節點每秒可以處理數以百萬計的消息)。
       Storm的部署和運維都很便捷,而且更爲重要的是可以使用任意編程語言來開發應用。

二、系統特性
1、編程模型簡單
       Storm爲大數據的實時計算提供了一些簡單優美的原語,這大大降低了開發並行實時處理任務的複雜性,幫助你快速、高效的開發應用。
2、可擴展
       在Storm集羣中真正運行Topology的主要有三個實體:工作進程、線程和任務。
       Storm集羣中的每臺機器上都可以運行多個工作進程,每個工作進程又可創建多個線程,每個線程可以執行多個任務,任務是真正進行數據處理的實體,Spout、Bolt被開發出來就是作爲一個或者多個任務的方式執行的。
3、高可靠性
       Storm可以保證Spout發出的每條消息都能被“完全處理”,Spout發出的消息後續可能會觸發產生成千上萬條消息,可以形象地理解爲一棵消息樹,其中Spout發出的消息爲樹根,Storm會跟蹤這個消息樹的處理情況,只有這棵樹中的所有消息被處理了才認爲“完全處理”了,否則Spout會重發消息。
4、高容錯性
       如果在消息處理過程中出現了一些異常,Storm會重新部署這個出問題的處理單元。Storm保證一個處理單元永遠運行(除非你顯示的結束這個處理單元)。
5、支持多種編程語言
       除了用Java實現Spout和Bolt,你還可以使用任何你熟悉的編程語言來完成這項工作,這一切得益於Storm所謂的多語言協議。
       多語言協議是Storm內部的一種特殊協議,允許Spout或者Bolt使用標準輸入和標準輸出來進行消息傳遞,傳遞的消息爲單行文本或者JSON編碼的多行。
6、支持本地模式
       Storm有一種“本地模式”,也就是在進程中模擬一個Storm集羣的所有功能,以本地模式運行Topology跟在集羣上運行Topology類似,這對於我們開發和測試來說非常有用。
7、高效
       用ZeroMQ作爲底層消息隊列,保證消息能快速被處理。
8、運維和部署簡單
       Storm計算任務是以“拓撲”爲基本單位的,每個拓撲完成特定的業務指標,拓撲中的每個邏輯業務節點實現特定的邏輯,並通過消息相互協作。
       實際部署時,僅需要根據情況配置邏輯節點的併發數,而不需要關心部署到集羣中的哪臺機器,Storm支持動態增加節點但不會自動負載均衡。
9、圖形化監控
       圖形界面,可以監控各個拓撲的信息,包括每個處理單元的狀態和處理消息的數量。

三、類似系統
       這裏主要將Yahoo!S4和IBM InfoSphere Streams與Storm進行對比。
1、Yahoo!S4
      (1)系統模型:通過把任務分解爲儘可能小的處理單元,各處理單元之間形成流水線,從而提高併發度和吞吐量,處理單元的粒度由開發者自行把握,這點與Storm相似,不同的是S4內置的處理單元PE還可以處理count、join和aggregate等常見任務需求。
      (2)開發:S4使用Java開發,模塊高度可定製化。
      (3)通信協議:S4節點間通信採用POJOs(Plain Old Java Objects)模式,底層通信協議採用UDP。
      (4)高可用:S4集羣中所有節點對等,無單點問題。
      (5)運維與部署:S4不支持動態部署和動態增刪節點,這兩點Storm都支持。
2、IBM InfoSphere Streams
       (1)系統模型:通過把任務分解爲儘可能小的處理單元,各處理單元之間形成流水線,從而提高併發度和吞吐量,各處理單元只能完成預定的操作(如:join、merge等),強制限制每個處理單元的粒度。
       (2)開發:定製的開發環境Eclipse-SPL(Steam Programming Language)。
       (3)高可用:與S4和Storm一樣支持故障轉移。
       (4)運維與部署:部署半自動化,支持動態增加節點,且根據負載自動均衡,這點Storm不支持。

四、應用模式
1、海量數據處理
       Storm由於其高效、可靠、可擴展、易部署、高容錯及實時性高等特點,對於海量數據的實時處理非常合適。
       比如:統計網站的頁面瀏覽量(如:Page View即PV)指標,Storm可以做到實時接收到點擊數據流,並實時計算出結果。
2、中間狀態存儲與查詢
       對於Storm實時計算出的中間結果,可以實時寫入MySQL或者HBase,以便於用戶查詢。
3、數據增量更新
       對於PV指標的計算,如果直接實時修改HBase,則HBase壓力會很大。
       可以將數據在Storm內計算短暫的一段時間後,增量地合併到HBase,以犧牲一定查詢結果的實時性換取HBase壓力的減輕。
4、結合概率算法實時計算複雜指標
       Storm實時處理數據,相對離線處理而言需要大量內存存儲中間狀態,爲了減少內存的消耗,可以根據業務特點(如:Unique Visitor即UV)採用概率算法近似計算結果。


原文: http://cda.pinggu.org/view/573.html

發佈了25 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章