Storm中Trident框架詳解

發表於2020-12-31

一、Storm Trident概述及特性

Trident是在storm基礎上,一個以realtime 計算為目標的高度抽象。 它在提供處理大吞吐量資料能力的同時,也提供了低延時分散式查詢和有狀態流式處理的能力。好比 Mapreduce框架的Pig,Trident是Storm提供的基於基本API開發的高階框架。Trident提供了 joins, aggregations, grouping, functions, 以及 filters等能力。

除此之外,Trident 還提供了一些專門的原語,從而在基於資料庫或者其他儲存的前提下來應付有狀態的遞增式 處理。

Trident是完全容錯的,擁有有且只有一次處理的語義,其實就是transactional的高階封裝。這就讓你可以很輕鬆 的使用Trident來進行實時資料處理。Trident會把狀態以某種形式保持起來,當有錯誤發生時,它會根據需要來恢復 這些狀態。

Trident封裝了transactional事務類,所以我們不再需要學習Batch相關的基礎API了,減輕了學習成本。

trident每次處理訊息均以batch為單位,即一次處理多個元組

trident是storm的更高層次抽象,主要提供了3個方面的好處:

  • (1)常用的count,sum等封裝成了方法,可以直接呼叫不需要自己實現。
  • (2)提供一次原語,如groupby等。
  • (3)提供事務支援,可以保證資料均處理且只處理了一次(恰好一次)

如果我們開發一個對文字中的詞頻進行統計的程式,使用Storm框架的話我們需要開發三個Storm元件:

  • 1.一個Spout負責收集文字資訊並分段,做為sentence欄位傳送給下游的Bolt
  • 2.一個Bolt將每段文字分詞,將分詞結果以word欄位傳送給下游的Bolt
  • 3.一個Bolt對詞頻進行統計,把統計結果記錄在count欄位並儲存

如果使用Trident我們可以使用一下程式碼完成上述操作:
在這裡插入圖片描述

二、TridentTopology與StormToplogy

(1)區別
StormToplogy:
在這裡插入圖片描述
TridentTopology
在這裡插入圖片描述
(2)聯絡
在這裡插入圖片描述
spout的訊息流涉及到的核心類
在這裡插入圖片描述

三、TridentTopology的可靠性機制詳解

在這裡插入圖片描述

四、Storm Trident API講解

在這裡插入圖片描述


以上內容僅供參考學習,如有侵權請聯絡我刪除!
如果這篇文章對您有幫助,左下角的大拇指就是對博主最大的鼓勵。
您的鼓勵就是博主最大的動力!

相關文章