storm中fieldsGroup的機制

2021-06-21 13:53:10 字數 953 閱讀 2906

說實話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 ...