大資料架構之:Storm

來源:互聯網
上載者:User

標籤:

     Storm是一個免費開源、分布式、高容錯的即時計算系統,Twitter開發貢獻給社區的。Storm令持續不斷的StreamCompute變得容易,彌補了Hadoop批處理所不能滿足的即時要求。     

    Storm經常用於在即時分析、線上機器學習、持續計算、分布式遠程調用和ETL等領域。

特點

1、Storm這是一個分布式的、容錯的即時計算系統
2、Storm叢集主要由一個主節點(master node)和一組工作節點(worker nodes)組成,通過 Zookeeper叢集進行協調。
3、主節點通常運行一個背景程式 —— Nimbus,它接收使用者提交的任務,並將任務分配到工作節點,同時進行故障監測。工作節點同樣會運行一個背景程式 —— Supervisor,用於接收工作指派並基於要求運行背景工作處理序——Worker。

Storm架構

  • Topology:storm中啟動並執行一個即時應用程式.
  • Nimbus:負責資源分派和任務調度.
  • Supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker進程.
  • Worker:運行具體處理組件邏輯的進程.
  • Spout:在一個topology中產生來源資料流的組件.
  • Bolt:在一個topology中接受資料然後執行處理的組件.
  • Task:worker中每一個spout/bolt的線程稱為一個task.
  • Tuple:一次訊息傳遞的基本單元.
  • Stream grouping:訊息的分組方法

架構理解

 

Storm的設計思想

       在Storm中也有對於流stream的抽象,流是一個不間斷的無界的連續tuple,注意Storm在建模事件流時,把流中的事件抽象為tuple即元組,後面會解釋storm中如何使用tuple。 Storm認為每個stream都有一個stream源,也就是原始元組的源頭,所以它將這個源頭抽象為spout,spout可能是串連twitter api並不斷髮出tweets,也可能是從某個隊列中不斷讀取隊列元素並裝配為tuple發射。 有了源頭即spout也就是有了stream,那麼該如何處理stream內的tuple呢,同樣的思想twitter將流的中間狀態轉換抽象為Bolt,bolt可以消費任意數量的輸入資料流,只要將流方嚮導向該bolt,同時它也可以發送新的流給其他bolt使用,這樣一來,只要開啟特定的spout(管口)再將spout中流出的tuple導向特定的bolt,又bolt對匯入的流做處理後再導向其他bolt或者目的地。 我們可以認為spout就是一個一個的水龍頭,並且每個水龍頭裡流出的水是不同的,我們想拿到哪種水就擰開哪個水龍頭,然後使用管道將水龍頭的水導向到一個水處理器(bolt),水處理器處理後再使用管道導向另一個處理器或者存入容器中。 為了增大水處理效率,我們很自然就想到在同個水源處接上多個水龍頭並使用多個水處理器,這樣就可以提高效率。沒錯Storm就是這樣設計的,看到我們就明白了。

       對應上文的介紹,我們可以很容易的理解這幅圖,這是一張有向非循環圖,Storm將這個圖抽象為Topology即拓撲(的確,拓撲結構是有向無環的),拓撲是storm中最高層次的一個抽象概念,它可以被提交到storm叢集執行,一個拓撲就是一個流轉換圖,圖中每個節點是一個spout或者bolt,圖中的邊表示bolt訂閱了哪些流,當spout或者bolt發送元組到流時,它就發送元組到每個訂閱了該流的bolt(這就意味著不需要我們手工拉管道,只要預先訂閱,spout就會將流發到適當bolt上)。

     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。   

 

大資料架構之:Storm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.