jstorm知識整理

2022-07-25 13:27:26 字數 526 閱讀 5911

最近在做乙個jstorm的程式。我的jstorm程式消費乙個kafka主題,根據資料邏輯判斷需要往下游哪幾個kafka主題的生產者傳送。

1、bolt的execute(tuple input)方法每次接收一條,處理好對應的dto的json資料的話需要將資料傳送到下游kafka主題。我觀察到producer傳送資料需要的時間比較多,一般發一次都要800毫秒。所以用了乙個佇列arrayblockingqueue儲存固定數量批量傳送。批量處理的條數不能太大,因為一次性傳送到kafka的資料條數*單條資料大小不能超過限制,我公司設定的不能超過1mb;

配置引數的計算公式:spout_pending*spout數量/ (bolt數量*批量處理條數) 等於1.2左右

2、spout數量和分割槽數一致,設大了沒有意義;

3、jstorm有乙個系統自帶的發系統級別的tuple,只需要設定全域性引數即可:

在execute方法中能判斷是否是系統tuple:  stringutils.equals(input.getsourcecomponent(), "__system");

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...