天天看點

Storm實時流處理原理與實踐之一:Storm基本概念

文章目錄

    • 簡介
    • Storm流處理概念
    • Storm架構

簡介

Apache Storm是一個分布式的實時計算架構,用于實時分析、機器學習、連續計算、分布式RPC、ETL等等。

Storm的topology消費資料流,對資料流做各種複雜處理,可以分區并在各個階段stage對流做計算。Storm内在的并發機制使得可以達到高吞吐量和低延時。

Storm流處理概念

Storm需要掌握以下幾個概念:Topology、Spout、Bolt。下面先從一張圖來直覺的了解:

Storm實時流處理原理與實踐之一:Storm基本概念

流處理可以将資料流想象為水流,原始資料流進入噴水孔(Spout),經過各個螺栓(Bolt)分流處理,最終将計算結果儲存在資料庫等。其中資料流是tuple stream。tuple是Storm中的基本資料結構,tuple可以了解為一個有序字段清單,每個字段(filed)可以是任何資料類型。通過Bolt中的declare來生聲明tuple中的字段名稱(newFields(“name1”,“name2”)), 所有的資料處理在Bolt内完成。整個Spout和Bolt構成一個拓撲圖,稱為Topology。

Storm架構

Storm是主從架構,Nimbus主節點将job分發給Supervisor啟動Worker程序,Worker啟動Executor線程池執行Task。

Storm實時流處理原理與實踐之一:Storm基本概念

Nimbus和Supervisor通過Zookeeper實作資訊互動,其往Zookeeper寫資料,由另一方讀取資料,達到資訊的同步。

Nimbus主節點運作和分析topology,分發task給Supervisor。在Zookeeper的znode寫入job資訊,Supervisor來讀取znode的資訊。 Storm的daemons、Nimbus 、Supervisors被設計成無狀态的和fail-fast,依靠Zookeeper監控節點狀态,如果Worker程序故障會自動重新開機,如果節點故障會啟動其他節點,以達到高容錯。

Supervisor拿到job後,啟動多個Worker程序,Worker啟動多個Executor線程池,Executor運作的task都屬于同一Spout或Bolt。

參考資料

http://storm.apache.org/releases/1.0.6/index.html

https://www.tutorialspoint.com/apache_storm/apache_storm_tutorial.pdf

繼續閱讀