storm的流分组策略
關(guān)于storm的基礎,參照我這篇文章:流式計算storm
關(guān)于并發(fā)和并行,參照我這篇文章:并發(fā)和并行
關(guān)于storm的并行度解釋,參照我這篇文章:storm的并行度解釋
關(guān)于storm的流分組策略,參照我這篇文章:storm的流分組策略
關(guān)于storm的消息可靠機制,參照我這篇文章:storm的消息可靠機制
storm中有多個bolt和多個spout,他們之間會有多種連接方式,他們之間的tuple也是多種傳遞方式,正是有了這些靈活的分組策略,才使得storm可以分層處理,每層bolt都只做自己的事情,做完就通過分組策略傳給下一層bolt
storm里面有7種 stream grouping
github上有源碼:https://github.com/apache/storm
最好是下載到本地,對著下面提供的看.
這7中storm對應的接口是:
org.apache.storm.topology.InputDeclarer<T extends InputDeclarer>1.shuffle grouping
org.apache.storm.grouping.ShuffleGrouping隨機分組,保證每個bolt任務被均勻的分配tuple
2.fields grouping
org.apache.storm.trident.partition.IndexHashGrouping按字段分組,相同字段的tuple總是被分到相同的bolt中的一個task上,一般用在計數(shù)等
3.all grouping
廣播發(fā)送tuple,tuple會被發(fā)給所有bolt,常用來發(fā)送信號
4.global grouping
org.apache.storm.trident.partition.GlobalGrouping全局分組,所有的tuple被發(fā)到一個bolt的一個task上,一般用來匯總
5.none grouping
org.apache.storm.testing.NGrouping不分組,效果和隨機分組一樣,
有點不一樣的是storm會使用none grouping的這一個bolt放到這個bolt的訂閱者同一個線程里面去執(zhí)行 ( 這個暫時沒明白有什么好處之類的 )
6.direct grouping
org.apache.storm.trident.partition.IdentityGrouping直接分組消息發(fā)送者指定消息接收者的哪個task處理這個消息,只有被表名direct stream的消息流可以處理這個方法
消息處理者可以通過topologyContext來獲取處理它消息的task id
7.local or shuffle grouping
org.apache.storm.grouping.LoadAwareShuffleGrouping自定義分組,需實現(xiàn)customStreamGrouping接口
總結(jié)
以上是生活随笔為你收集整理的storm的流分组策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库优化、数据库基础等常用知识点总结
- 下一篇: java 时间的相关转换操作