storm分組策略介紹

2021-09-02 19:43:54 字數 1130 閱讀 5815

[size=medium][b]一、storm資料**[/b][/size]

spout的資料來源:

mq:直接流資料來源

db:只能讀配置檔案

檔案:只能學習用,其他無用。

問題:1、分布式應用無法讀;2、spout開併發會重複讀

log檔案增量資料:1、讀出內容寫入mq,2、storm處理

[size=medium][b]二、分組策略[/b][/size]

stream grouping就是用來定義乙個stream應該如果分配給bolts上面的多個

executors(多執行緒,併發度)

注:不是乙個spout或bolt emit到多個bolt(廣播方式)。

storm裡面有6種型別的stream grouping。

單執行緒下均等同於all grouping

1.shuffle grouping:輪詢,每個執行緒平均分配。隨機派發stream裡面的tuple,保證每個bolt接收到的tuple數目相同。

2. non grouping:無分組, 這種分組和shuffle grouping是一樣的效果,多執行緒下不平均分配。

3. fields grouping:按field分組,比如按word來分組, 具有同樣word的tuple會被分到相同的bolts, 而不同的word則會被分配到不同的bolts。

2、相同的tuple會分發給同乙個執行緒(executer或task)處理

典型場景: 去重操作、join

4. all grouping: 廣播傳送, 對於每乙個tuple, 所有的bolts都會收到。每個執行緒獲得的資料一致。

5. global grouping: 全域性分組, 這個tuple被分配到storm中的乙個bolt的其中乙個task。再具體一點就是分配給id值最低的那個task。適合場景:想象不到。

6. direct grouping: 直接分組, 這是一種比較特別的分組方法,用這種分組意味著訊息的傳送者決定由訊息接收者的哪個task處理這個訊息。 只有被宣告為direct stream的訊息流可以宣告這種分組方法。而且這種訊息tuple必須使用emitdirect方法來發射。訊息處理者可以通過topologycontext來或者處理它的訊息的taskid (outputcollector.emit方法也會返回taskid)

storm的分組策略

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

storm訊息分組策略

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

storm的流分組策略

關於storm的基礎,參照我這篇文章 流式計算storm 關於併發和並行,參照我這篇文章 併發和並行 關於storm的並行度解釋,參照我這篇文章 storm的並行度解釋 關於storm的流分組策略,參照我這篇文章 storm的流分組策略 關於storm的訊息可靠機制,參照我這篇文章 storm的訊息...