天天看點

wordscount執行個體講解storm生命周期Storm單詞技術案例(重點掌握)

Storm單詞技術案例(重點掌握)

7.1、功能說明

設計一個topology,來實作對文檔裡面的單詞出現的頻率進行統計。

整個topology分為三個部分:

l RandomSentenceSpout:資料源,在已知的英文句子中,随機發送一條句子出去。

l SplitSentenceBolt:負責将單行文本記錄(句子)切分成單詞

l WordCountBolt:負責對單詞的頻率進行累加

7.2、項目主要流程

wordscount執行個體講解storm生命周期Storm單詞技術案例(重點掌握)

7.3、RandomSentenceSpout的實作及生命周期

wordscount執行個體講解storm生命周期Storm單詞技術案例(重點掌握)

7.4、SplitSentenceBolt的實作及生命周期

wordscount執行個體講解storm生命周期Storm單詞技術案例(重點掌握)

7.5、WordCountBolt的實作及生命周期

wordscount執行個體講解storm生命周期Storm單詞技術案例(重點掌握)

7.6、Stream Grouping詳解

Storm裡面有7種類型的stream grouping

l Shuffle Grouping: 随機分組, 随機派發stream裡面的tuple,保證每個bolt接收到的tuple數目大緻相同。

l Fields Grouping:按字段分組,比如按userid來分組,具有同樣userid的tuple會被分到相同的Bolts裡的一個task,而不同的userid則會被配置設定到不同的bolts裡的task。

l All Grouping:廣播發送,對于每一個tuple,所有的bolts都會收到。

l Global Grouping:全局分組, 這個tuple被配置設定到storm中的一個bolt的其中一個task。再具體一點就是配置設定給id值最低的那個task。

l Non Grouping:不分組,這stream grouping個分組的意思是說stream不關心到底誰會收到它的tuple。目前這種分組和Shuffle grouping是一樣的效果, 有一點不同的是storm會把這個bolt放到這個bolt的訂閱者同一個線程裡面去執行。

l Direct Grouping: 直接分組, 這是一種比較特别的分組方法,用這種分組意味着消息的發送者指定由消息接收者的哪個task處理這個消息。隻有被聲明為Direct Stream的消息流可以聲明這種分組方法。而且這種消息tuple必須使用emitDirect方法來發射。消息處理者可以通過TopologyContext來擷取處理它的消息的task的id (OutputCollector.emit方法也會傳回task的id)。

l Local or shuffle grouping:如果目标bolt有一個或者多個task在同一個工作程序中,tuple将會被随機發生給這些tasks。否則,和普通的Shuffle Grouping行為一緻。

注:如對以上有如何問題,可私信我