storm的流分組策略

2021-08-26 05:52:32 字數 1611 閱讀 5593

關於storm的基礎,參照我這篇文章:流式計算storm

關於併發和並行,參照我這篇文章:併發和並行

關於storm的並行度解釋,參照我這篇文章:storm的並行度解釋

關於storm的流分組策略,參照我這篇文章:storm的流分組策略

關於storm的訊息可靠機制,參照我這篇文章:storm的訊息可靠機制

storm中有多個bolt和多個spout,他們之間會有多種連線方式,他們之間的tuple也是多種傳遞方式,正是有了這些靈活的分組策略,才使得storm可以分層處理,每層bolt都只做自己的事情,做完就通過分組策略傳給下一層bolt

github上有原始碼:

這7中storm對應的介面是:

org.apache

.storm

.topology

.inputdeclarer

1.shuffle grouping
org.apache

.storm

.grouping

.shufflegrouping

隨機分組,保證每個bolt任務被均勻的分配tuple

2.fields grouping

org.apache

.storm

.trident

.partition

.indexhashgrouping

按欄位分組,相同欄位的tuple總是被分到相同的bolt中的乙個task上,一般用在計數等

3.all grouping

廣播傳送tuple,tuple會被發給所有bolt,常用來傳送訊號

4.global grouping

org.apache

.storm

.trident

.partition

.globalgrouping

全域性分組,所有的tuple被發到乙個bolt的乙個task上,一般用來彙總

5.none grouping

org.apache

.storm

.testing

.ngrouping

不分組,效果和隨機分組一樣,

有點不一樣的是storm會使用none grouping的這乙個bolt放到這個bolt的訂閱者同乙個執行緒裡面去執行 ( 這個暫時沒明白有什麼好處之類的 )

6.direct grouping

org.apache

.storm

.trident

.partition

.identitygrouping

直接分組訊息傳送者指定訊息接收者的哪個task處理這個訊息,只有被表名direct stream的訊息流可以處理這個方法

訊息處理者可以通過topologycontext來獲取處理它訊息的task id

7.local or shuffle grouping

org.apache

.storm

.grouping

.loadawareshufflegrouping

自定義分組,需實現customstreamgrouping介面

storm的分組策略

storm有7種流分組策略 1 shuffle grouping 隨機分組 將tuple隨機分配到bolt中,能夠保證各task中處理的資料均衡 2 fields grouping 按欄位分組 根據設定的字段相同值得tuple被分配到同乙個bolt進行處理 舉例 builder.setbolt my...

storm分組策略介紹

size medium b 一 storm資料 b size spout的資料來源 mq 直接流資料來源 db 只能讀配置檔案 檔案 只能學習用,其他無用。問題 1 分布式應用無法讀 2 spout開併發會重複讀 log檔案增量資料 1 讀出內容寫入mq,2 storm處理 size medium ...

storm訊息分組策略

grouping 訊息分發策略決定了訊息在spout和bolt間,bolt和bolt間如何進行傳遞。流分組策略有內建的八種,同時還可以進行自定義。這裡將介紹最常用的幾種 shuffle grouping 隨機分發到兩個bolt上,確保兩個bolt上tuple的數量大體相同,從日誌列印上可看出。bui...