【Storm篇】--Storm基礎概念

LHBlog發表於2018-01-25

一、前述

Storm是個實時的、分散式以及具備高容錯的計算系統,Storm程式常駐記憶體 ,Storm資料不經過磁碟,在記憶體中處理。

二、相關概念

1.非同步:

流式處理(非同步)
客戶端提交資料進行結算,並不會等待資料計算結果。


2.同步:

實時請求應答服務(同步)
客戶端提交資料請求之後,立刻取得計算結果並返回給客戶端。

3.Storm,Sparkstreaming,Mapreduce相關概念比較:

Storm:(實時處理)

專門為流式處理設計
資料傳輸模式更為簡單,很多地方也更為高效
並不是不能做批處理,它也可以來做微批處理,來提高吞吐。

Spark Streaming:微批處理
將RDD做的很小來用小的批處理來接近流式處理
基於記憶體和DAG可以把處理任務做的很快。

MapReduce:

Storm:程式、執行緒常駐記憶體執行,資料不進入磁碟,資料通過網路傳遞。
MapReduce:為TB、PB級別資料設計的批處理計算框架。

4.Storm 計算模型

Topology – DAG有向無環圖的實現(拓撲圖)

對於Storm實時計算邏輯的封裝
即,由一系列通過資料流相互關聯的Spout、Bolt所組成的拓撲結構
生命週期:此拓撲只要啟動就會一直在叢集中執行,直到手動將其kill,否則不會終止
    (區別於MapReduce當中的Job,MR當中的Job在計算執行完成就會終止)。

Tuple – 元組
Stream中最小資料組成單元

Stream – 資料流
從Spout中源源不斷傳遞資料給Bolt、以及上一個Bolt傳遞資料給下一個Bolt,所形成的這些資料通道即叫做Stream
Stream宣告時需給其指定一個Id(預設為Default)
實際開發場景中,多使用單一資料流,此時不需要單獨指定StreamId

Spout – 資料來源
拓撲中資料流的來源。一般會從指定外部的資料來源讀取元組(Tuple)傳送到拓撲(Topology)中
一個Spout可以傳送多個資料流(Stream)
可先通過OutputFieldsDeclarer中的declare方法宣告定義的不同資料流,傳送資料時通過SpoutOutputCollector中的emit方法指定資料流Id(streamId)引數將資料傳送出去
Spout中最核心的方法是nextTuple,該方法會被Storm執行緒不斷呼叫、主動從資料來源拉取資料,再通過emit方法將資料生成元組(Tuple)傳送給之後的Bolt計算

Bolt – 資料流處理元件
拓撲中資料處理均有Bolt完成。對於簡單的任務或者資料流轉換,單個Bolt可以簡單實現;更加複雜場景往往需要多個Bolt分多個步驟完成
一個Bolt可以傳送多個資料流(Stream)
可先通過OutputFieldsDeclarer中的declare方法宣告定義的不同資料流,傳送資料時通過SpoutOutputCollector中的emit方法指定資料流Id(streamId)引數將資料傳送出去
Bolt中最核心的方法是execute方法,該方法負責接收到一個元組(Tuple)資料、真正實現核心的業務邏輯

 

相關文章