Storm的Spout和Bolt中的方法

2021-08-03 00:20:10 字數 2091 閱讀 6409

一、spout中的方法

當乙個task

被初始化的時候會呼叫此

open

方法。一般都會在此方法中對傳送

tuple

的物件spoutoutputcollector

和配置物件

topologycontext

初始化。

此方法用於宣告當前

spout

的tuple

傳送流。

stream

流的定義是通過

outputfieldsdeclare.declarestream

方法完成的,其中的引數包括了傳送的域

此方法用於宣告針對當前元件的特殊的

configuration

配置。

spout

類中最重要的乙個方法。發射乙個

tuple

到topology

都是通過這個方法來實現的

二、bolt中的方法

此方法和

spout

中的open

方法類似,為

bolt

提供了outputcollector

,用來從

bolt

中傳送tuple

。執行在

execute

方法之前

用於宣告當前

bolt

傳送的tuple

中包含的字段

這是bolt

中最關鍵的乙個方法,對於

tuple

的處理都可以放到此方法中進行。具體的傳送也是通過

emit

方法來完成的。此時,有兩種情況,一種是

emit

方法中有兩個引數,另乙個種是有乙個引數。

(1)emit

有乙個引數:此唯一的引數是傳送到下游

bolt

的tuple

,此時,由上游發來的舊的

tuple

在此隔斷,新的

tuple

和舊的tuple

不再屬於同一棵

tuple

樹。新的

tuple

另起乙個新的

tuple

樹。(2)emit

有兩個引數:第乙個引數是舊的

tuple

的輸入流,第二個引數是發往下游

bolt

的新的tuple

流。此時,新的

tuple

和舊的tuple

是仍然屬於同一棵

tuple

樹,即,如果下游的

bolt

處理tuple

失敗,則會向上傳遞到當前

bolt

,當前bolt

根據舊的

tuple

流繼續往上游傳遞,申請重發失敗的

tuple

。保證tuple

處理的可靠性。

此方法用於宣告針對當前元件的特殊的

configuration

配置

Storm中Spout和Bolt的生命週期

1 在定義topology例項過程中,定義好spout例項和bolt例項 2 在提交topology例項給nimbus的過程中,會呼叫topologybuilder例項的createtopology 方法,以獲取定義的topology例項。在執行createtopology 方法的過程中,會去呼叫s...

SparkStreaming和storm的區別

這是2種不同的架構。他們的區別是sparkstreaming的吞吐量非常高,秒級準實時處理,storm是容錯性非常高,毫秒級實時處理 解釋 sparkstreaming是一次處理某個間隔的資料,比如5秒內的資料,批量處理,所以吞吐量高。storm是來一條處理一條,所以速度快,不存在丟失資料 應用場景...

spark和storm的對比

對比點 storm spark streaming 實時計算模型 純實時,來一條資料,處理一條資料 準實時,對乙個時間段內的資料收集起來,作為乙個rdd,再處理 實時計算延遲度 毫秒級 秒級 吞吐量 低 高 事務機制 支援完善 支援,但不夠完善 健壯性 容錯性 zookeeper,acker,非常強...