storm 0.9的原始碼介面解釋:
package backtype.storm.task;
public inte***ce ibolt extends serializable
接收tuple
作為輸入,輸出
tuple
,可以用來作過濾,鏈結,聚合等。
ibolt提交到
nimbus
後,nimbus
將作業傳送到
worker
後,每個
task
初始化時都會呼叫prepare。
package backtype.storm.task;
public class topologycontext extends workertopologycontext implements imetricscontext
topologycontext向bolts 和spouts 提供」prepare」 and 」open」 方法。 topologycontext提供了元件的各種資訊,流的資訊,task的資訊等。
package backtype.storm.task;
public class shellspout implements ispout
package backtype.storm.spout;
public class shellbolt implements ibolt
storm可以用其它語言來實現
spout
和bolt
的功能,如
python
和ruby
。shellspout /shellbolt 採用乙個特別的協議,通過標準io和其通訊。
區別irichbolt
和ibasicbolt
irichbolt繼承自
ibolt
和icomponent
。ibasicbolt
繼承自icomponent
,和ibolt
沒有繼承關係。
實現irichbolt
的bolt
有:baserichbolt,clojurebolt,coordinatedbolt,keyedfairbolt,richshellbolt等。
實現ibasicbolt的有:basebasicbolt,identitybolt,preparebatchbolt等。
他們的區別在於irichbolt需要手動的
ack或
fail
訊息,若不
ack,很快就
outofmemory
了;而ibasicbolt
不需要確認訊息,自動完成。
看下面的outputcollector和basicoutputcollector。
outputcollector實現了ioutputcollector,方法有:emit,emitdirect,ack,fail。
basicoutputcollector實現了ibasicoutputcollector,方法有:emit,emitdirect,reporterror。
可以看到,outputcollector暴露了emit api給irichbolt,包括了ack
和fail
,用來對應訊息成功
/而basicoutputcollector沒有此api,
對應於ibasicbolt。
顧名思義,批處理的bolt,與
irichbolt
和ibasicbolt
也沒有繼承關係。這個bolt物件每次處理一批batch在一起的
tuples
。對於每乙個
tuple
呼叫execute
方法。而在整個
batch
處理完成的時候呼叫
finishbatch
方法。然後新來一批tuples,會產生新的
batchbolt
來處理。具體可以見:
和ibatchbolt對應的collector
事務性的bolt。
記住:繼承了basetransactionalbolt的class在
execute
方法中獲取
tuple
時,應從下標為
1開始獲取,第
0個為transactionattempt物件,為,用來記錄
tuples
重放時。因為事務性的
bolt
繼承了批處理的
bolt
,具體還是見ibatchbolt中關於事務性拓撲的鏈結。
Storm篇 Storm基礎概念
一 前述 storm是個實時的 分布式以及具備高容錯的計算系統,storm程序常駐記憶體,storm資料不經過磁碟,在記憶體中處理。二 相關概念 1.非同步 流式處理 非同步 客戶端提交資料進行結算,並不會等待資料計算結果。2.同步 實時請求應答服務 同步 客戶端提交資料請求之後,立刻取得計算結果並...
storm基礎概念
以官網的結構圖為例子 storm用來幹什麼這裡就不說了,主要說下storm的一些基礎知識。官宣連線 原文翻譯 其實官方文件已經介紹的非常詳細了,這裡只是對某些比較晦澀的地方進行一些說明。storm 系統中包含以下幾個基本概念 拓撲 topologies 流 streams 資料來源 spouts 資...
Storm 二 Storm集群部署
集群部署的基本流程 集群部署的基礎環境準備 storm集群部署 storm集群的常用操作命令 storm集群的程序及日誌檢視 注意 所有的集群上都需要配置hosts vi etc hosts 192.168.239.128 storm01 zk01 hadoop01 192.168.239.129 ...