一、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,非常強...