JStorm使用总结
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 | Mapper/Reducer |
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出現后,基本上可以說一統江湖: 究其優點:
- 開發非常迅速:接口簡單,容易上手,只要遵守Topology、Spout和Bolt的編程規范即可開發出一個擴展性極好的應用,底層RPC、Worker之間冗余,數據分流之類的動作完全不用考慮
- 擴展性極好:當一級處理單元速度,直接配置一下并發數,即可線性擴展性能
- 健壯強:當Worker失效或機器出現故障時, 自動分配新的Worker替換失效Worker
- 數據準確性:可以采用Ack機制,保證數據不丟失。 如果對精度有更多一步要求,采用事務機制,保證數據準確。
應用場景
JStorm處理數據的方式是基于消息的流水線處理, 因此特別適合無狀態計算,也就是計算單元的依賴的數據全部在接受的消息中可以找到, 并且最好一個數據流不依賴另外一個數據流。
因此,常常用于
- 日志分析,從日志中分析出特定的數據,并將分析的結果存入外部存儲器如數據庫。目前,主流日志分析技術就使用JStorm或Storm
- 管道系統, 將一個數據從一個系統傳輸到另外一個系統, 比如將數據庫同步到Hadoop
- 消息轉化器, 將接受到的消息按照某種格式進行轉化,存儲到另外一個系統如消息中間件
- 統計分析器, 從日志或消息中,提煉出某個字段,然后做count或sum計算,最后將統計值存入外部存儲器。中間處理過程可能更復雜。
- 實時推薦系統, 將推薦算法運行在jstorm中,達到秒級的推薦效果
在實際應用中,一般會通過spout與其他系統集成,例如RocketMQ這樣的消息隊列。對于處理完成的數據,也可以選擇輸出到db或在bolt中直接導向其他系統做進一步處理
紅豆Live推薦算法中召回和排序的應用和策略
(召回環節,又叫匹配環節,是從海量商品庫里得到的一個候選商品集合)
第一,對用戶的行為日志進行利用 JStorm 實時收集,并定時更新基于 item 的協同過濾內容。
第二,對直播間內容進行利用 JStorm 實時收集,實時為直播間打上分類標簽、topic、主題詞等標簽,并定時更新用戶畫像內容。
第三,對用戶 query 日志利用 JStorm 實時收集,定時計算用戶 query 的 CTR。
最后,當用戶進行刷新時,利用召回策略進行召回,再根據排序策略選擇 top N 呈現給用戶。
推薦系統一般是實時數據統計,離線數據統計加權得到的結果
Storm流之一個Spout分發多個Bolt
Storm流之多個Bolt聚合到一個Bolt
騰訊云推薦系統介紹–百億級通用推薦系統實踐
總結
以上是生活随笔為你收集整理的JStorm使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建Socks5代理服务器[通俗易懂]
- 下一篇: uchar什么类型_char的用法举例(