大資料架構之 Storm

2022-07-17 08:57:09 字數 2107 閱讀 8743

storm是乙個免費開源、分布式、高容錯的實時計算系統,twitter開發貢獻給社群的。storm令持續不斷的流計算變得容易,彌補了hadoop批處理所不能滿足的實時要求。     

特點

1、storm這是乙個分布式的、容錯的實時計算系統

2、storm集群主要由乙個主節點(master node)和一組工作節點(worker nodes)組成,通過 zookeeper集群進行協調。

3、主節點通常執行乙個後台程式 —— nimbus,它接收使用者提交的任務,並將任務分配到工作節點,同時進行故障監測。工作節點同樣會執行乙個後台程式 —— supervisor,用於接收工作指派並基於要求執行工作程序——worker。

storm架構

架構理解

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) 安裝

tar xzvf apache storm 0.9 6.tar.gz 0.9 6 usr local storm export storm home usr local storm export path path storm home bin source etc profile storm ho...

大資料學習 Storm集群搭建

安裝storm之前要安裝zookeeper 一.安裝storm步驟 2.解壓安裝包 3.修改配置檔案 修改環境變數 etc profile export path bin path 指定storm使用的zk集群 storm.zookeeper.servers mini1 mini2 mini3 指定...

大資料基礎之HBase HBase物理架構解析

regionserver負責管理和維護region,負責儲存hbase的實際資料。hregion 可以看成是表的橫向切分,hbase 表的分片,hbase 每個表都會根據 rowkey 值被切分成不同的 hregion 分散儲存在 hregionserver 中,在乙個hregionserver 中...