說實話storm功能非常強大,但是參考資料是在是太少了,有些只能自己摸索,專案中用到了fieldsgroup,所以就研究一下。
fieldsgroup的機制是把declar中暴露定義的fields中的字段進行hash,然後分到不同的bolt中,開始理解有誤,所以一直跑不通。囧
直接上**
在第乙個spout中
public void declareoutputfields(outputfieldsdeclarer declarer)
其中order是自定義物件。
public void nexttuple() catch (interruptedexception e)
int i=r.nextint(4);
string str=arr[i];
order o=new order(str);
collector.emit(new values(str,o));
}這裡注意emit中我把前面declar中定義的字段都放入到values物件中(values底層就是list)
在第二個bolt中
public void execute(tuple input)
這裡從tuple中獲得自定義物件需要input.getvalue(1)說明物件在集合的第二個位置。
在main方法中
builder.setspout("myspout", new myspout(),1);
builder.setbolt("mybolt", new mybolt(),4).fieldsgrouping("myspout", new fields("word","order"));
這裡定義bolt分組策略時一定要選fieldsgrouping,並且還要定義fields中跟spout中的declar中宣告的fields一樣的內容才可以。
這裡還可以在delcar.declarstream申明流的名稱,這裡不多解釋了。
storm中的ack fail機制
概念 storm的ack fail機制也就是storm的可靠訊息處理機制,通俗來講就是給spout發出的每個tuple帶上乙個messageid,然後這個spout下面的每乙個bolt 都會給他返回乙個完成情況,只有當每乙個bolt都返回了正確的結果,整個傳送過程才算成功,任何乙個bolt處理不成功...
Storm 中的ack機制
一.ack原理 storm中有個特殊的task名叫acker,他們負責跟蹤spout發出的每乙個tuple的tuple樹 因為乙個tuple通過spout發出了,經過每乙個bolt處理後,會生成乙個新的tuple傳送出去 當acker 框架自啟動的task 發現乙個tuple樹已經處理完成了,它會傳...
Storm 二 Storm集群部署
集群部署的基本流程 集群部署的基礎環境準備 storm集群部署 storm集群的常用操作命令 storm集群的程序及日誌檢視 注意 所有的集群上都需要配置hosts vi etc hosts 192.168.239.128 storm01 zk01 hadoop01 192.168.239.129 ...