JStorm使用總結

2021-09-19 15:08:30 字數 1989 閱讀 5508

jstorm 是乙個類似hadoop mapreduce的系統, 使用者按照指定的介面實現乙個任務,然後將這個任務遞交給jstorm系統,jstorm將這個任務跑起來,並且按7 * 24小時執行起來,一旦中間乙個worker 發生意外故障, 排程器立即分配乙個新的worker替換這個失效的worker。

因此,從應用的角度,jstorm應用是一種遵守某種程式設計規範的分布式應用。從系統角度, jstorm是一套類似mapreduce的排程系統。 從資料的角度,jstorm是一套基於流水線的訊息處理機制。

實時計算現在是大資料領域中最火爆的乙個方向,因為人們對資料的要求越來越高,實時性要求也越來越快,傳統的hadoop mapreduce,逐漸滿足不了需求,因此在這個領域需求不斷。

storm元件和hadoop元件對比

storm

hadoop

角色nimbus

jobtracker

supervisor

tasktracker

worker

child

應用名稱

topology

job程式設計介面

spout/bolt

spout

在邏輯上,乙個topology 是由一些spout(訊息的傳送者)和bolt(訊息的處理者)組成圖狀結構

每個spouts 都可以發射多個訊息流,要實現這樣的效果,可以使用outfieldsdeclarer.declarestream 來定義多個stream,然後使用spoutoutputcollector 來發射指定的stream。

bolt

所有的拓撲處理都會在bolt中進行,bolt裡面可以做任何etl,比如過濾,函式,聚合,連線,寫入資料庫系統或快取等,乙個bolt可以做簡單的事件流轉換,如果是複雜的流轉化,往往需要多個bolt參與,這就是流計算,每個bolt都進行乙個業務邏輯處理,bolt也可以emit多個流到下游,通過declarestream方法宣告輸出的schema。 

bolt裡面主要的方法是execute方法,每次處理乙個輸入的tuple,bolt裡面也可以發射新的tuple使用outputcollector類,bolt裡面每處理乙個tuple必須呼叫ack方法以便於storm知道某個tuple何時處理完成。strom裡面的ibasicbolt介面可以自動 

呼叫ack。 

在storm和jstorm出現以前,市面上出現很多實時計算引擎,但自storm和jstorm出現後,基本上可以說一統江湖: 究其優點:

jstorm處理資料的方式是基於訊息的流水線處理, 因此特別適合無狀態計算,也就是計算單元的依賴的資料全部在接受的訊息中可以找到, 並且最好乙個資料流不依賴另外乙個資料流。

因此,常常用於

在實際應用中,一般會通過spout與其他系統整合,例如rocketmq這樣的訊息佇列。對於處理完成的資料,也可以選擇輸出到db或在bolt中直接導向其他系統做進一步處理

紅豆live推薦演算法中召回和排序的應用和策略

(召回環節,又叫匹配環節,是從海量商品庫里得到的乙個候選商品集合)

第一,對使用者的行為日誌進行利用 jstorm 實時收集,並定時更新基於 item 的協同過濾內容。

第二,對直播間內容進行利用 jstorm 實時收集,實時為直播間打上分類標籤、topic、主題詞等標籤,並定時更新使用者畫像內容。

第三,對使用者 query 日誌利用 jstorm 實時收集,定時計算使用者 query 的 ctr。

最後,當使用者進行重新整理時,利用召回策略進行召回,再根據排序策略選擇 top n 呈現給使用者。

推薦系統一般是實時資料統計,離線資料統計加權得到的結果

storm流之乙個spout分發多個bolt

storm流之多個bolt聚合到乙個bolt

Jstorm排程規則

任務排程演算法以worker為維度 排程過程中正在進行的排程動作不會對已發生的排程動作產生影響 排程過程中使用者可以自定義 usedefined assignment,和使用已有的old assignment,這兩者的優先順序是 usedefined assignment old assignmen...

Jstorm最佳實踐

在實際計算中,常常發現需要做資料訂正,因此在設計整個專案時,需要考慮重跑功能 如果使用trasaction時,增加kafka meta時,brokerid要按順序,即新增機器brokerid要比之前的都要大,這樣reassign spout消費brokerid時就不會發生錯位。非事務環境中,盡量使用...

JStorm平台搭建

簡易版可以參考 mvn package assembly assembly會在工程目錄下生成乙個檔案,打包在伺服器上解壓縮,按照上述步驟執行即可。you can download a jstorm release 出現上述問題是因為我們的目錄下缺少release檔案。放乙個進去就好。請不要忘記修改s...