一、前述
storm是個實時的、分布式以及具備高容錯的計算系統,storm程序常駐記憶體,storm資料不經過磁碟,在記憶體中處理。
二、相關概念
1.非同步:
流式處理(非同步)
客戶端提交資料進行結算,並不會等待資料計算結果。
2.同步:
實時請求應答服務(同步)
客戶端提交資料請求之後,立刻取得計算結果並返回給客戶端。
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)資料、真正實現核心的業務邏輯
storm基礎概念
以官網的結構圖為例子 storm用來幹什麼這裡就不說了,主要說下storm的一些基礎知識。官宣連線 原文翻譯 其實官方文件已經介紹的非常詳細了,這裡只是對某些比較晦澀的地方進行一些說明。storm 系統中包含以下幾個基本概念 拓撲 topologies 流 streams 資料來源 spouts 資...
Storm 核心概念
核心概念 topologies 拓撲,將整個流程串起來 計算拓撲,由spout和bolt組成 類似於mr作業 mr最終要完成,topology會一直執行除非自己殺死 對應的資源 topologybuilder running topologies on a production cluster lo...
Storm概念理解
組成 topology是storm裡的最高抽象概念,相當於hadoop裡的mapreduce,topology 流轉換圖 由spouts和bolts組成。spout建立stream,stream由無限的tuple 元組 構成。bolts接收spout流出的tuple並進行處理,處理後生成的新的tup...