日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JStorm使用总结

發(fā)布時(shí)間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 JStorm使用总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JStorm 是一個(gè)類似Hadoop MapReduce的系統(tǒng), 用戶按照指定的接口實(shí)現(xiàn)一個(gè)任務(wù),然后將這個(gè)任務(wù)遞交給JStorm系統(tǒng),JStorm將這個(gè)任務(wù)跑起來,并且按7 * 24小時(shí)運(yùn)行起來,一旦中間一個(gè)Worker 發(fā)生意外故障, 調(diào)度器立即分配一個(gè)新的Worker替換這個(gè)失效的Worker。

因此,從應(yīng)用的角度,JStorm應(yīng)用是一種遵守某種編程規(guī)范的分布式應(yīng)用。從系統(tǒng)角度, JStorm是一套類似MapReduce的調(diào)度系統(tǒng)。 從數(shù)據(jù)的角度,JStorm是一套基于流水線的消息處理機(jī)制。

實(shí)時(shí)計(jì)算現(xiàn)在是大數(shù)據(jù)領(lǐng)域中最火爆的一個(gè)方向,因?yàn)槿藗儗?shù)據(jù)的要求越來越高,實(shí)時(shí)性要求也越來越快,傳統(tǒng)的Hadoop MapReduce,逐漸滿足不了需求,因此在這個(gè)領(lǐng)域需求不斷。

Storm組件和Hadoop組件對比

Storm Hadoop
角色 Nimbus JobTracker
Supervisor TaskTracker
Worker Child
應(yīng)用名稱 Topology Job
編程接口 Spout/Bolt Mapper/Reducer

Spout

在邏輯上,一個(gè)Topology 是由一些Spout(消息的發(fā)送者)和Bolt(消息的處理者)組成圖狀結(jié)構(gòu)

每個(gè)Spouts 都可以發(fā)射多個(gè)消息流,要實(shí)現(xiàn)這樣的效果,可以使用OutFieldsDeclarer.declareStream 來定義多個(gè)Stream,然后使用SpoutOutputCollector 來發(fā)射指定的Stream。

bolt

所有的拓?fù)涮幚矶紩赽olt中進(jìn)行,bolt里面可以做任何etl,比如過濾,函數(shù),聚合,連接,寫入數(shù)據(jù)庫系統(tǒng)或緩存等,一個(gè)bolt可以做簡單的事件流轉(zhuǎn)換,如果是復(fù)雜的流轉(zhuǎn)化,往往需要多個(gè)bolt參與,這就是流計(jì)算,每個(gè)bolt都進(jìn)行一個(gè)業(yè)務(wù)邏輯處理,bolt也可以emit多個(gè)流到下游,通過declareStream方法聲明輸出的schema。

Bolt里面主要的方法是execute方法,每次處理一個(gè)輸入的tuple,bolt里面也可以發(fā)射新的tuple使用OutputCollector類,bolt里面每處理一個(gè)tuple必須調(diào)用ack方法以便于storm知道某個(gè)tuple何時(shí)處理完成。Strom里面的IBasicBolt接口可以自動
調(diào)用ack。

優(yōu)點(diǎn)

在Storm和JStorm出現(xiàn)以前,市面上出現(xiàn)很多實(shí)時(shí)計(jì)算引擎,但自Storm和JStorm出現(xiàn)后,基本上可以說一統(tǒng)江湖: 究其優(yōu)點(diǎn):

  • 開發(fā)非常迅速:接口簡單,容易上手,只要遵守Topology、Spout和Bolt的編程規(guī)范即可開發(fā)出一個(gè)擴(kuò)展性極好的應(yīng)用,底層RPC、Worker之間冗余,數(shù)據(jù)分流之類的動作完全不用考慮
  • 擴(kuò)展性極好:當(dāng)一級處理單元速度,直接配置一下并發(fā)數(shù),即可線性擴(kuò)展性能
  • 健壯強(qiáng):當(dāng)Worker失效或機(jī)器出現(xiàn)故障時(shí), 自動分配新的Worker替換失效Worker
  • 數(shù)據(jù)準(zhǔn)確性:可以采用Ack機(jī)制,保證數(shù)據(jù)不丟失。 如果對精度有更多一步要求,采用事務(wù)機(jī)制,保證數(shù)據(jù)準(zhǔn)確。

應(yīng)用場景

JStorm處理數(shù)據(jù)的方式是基于消息的流水線處理, 因此特別適合無狀態(tài)計(jì)算,也就是計(jì)算單元的依賴的數(shù)據(jù)全部在接受的消息中可以找到, 并且最好一個(gè)數(shù)據(jù)流不依賴另外一個(gè)數(shù)據(jù)流。

因此,常常用于

  • 日志分析,從日志中分析出特定的數(shù)據(jù),并將分析的結(jié)果存入外部存儲器如數(shù)據(jù)庫。目前,主流日志分析技術(shù)就使用JStorm或Storm
  • 管道系統(tǒng), 將一個(gè)數(shù)據(jù)從一個(gè)系統(tǒng)傳輸?shù)搅硗庖粋€(gè)系統(tǒng), 比如將數(shù)據(jù)庫同步到Hadoop
  • 消息轉(zhuǎn)化器, 將接受到的消息按照某種格式進(jìn)行轉(zhuǎn)化,存儲到另外一個(gè)系統(tǒng)如消息中間件
  • 統(tǒng)計(jì)分析器, 從日志或消息中,提煉出某個(gè)字段,然后做count或sum計(jì)算,最后將統(tǒng)計(jì)值存入外部存儲器。中間處理過程可能更復(fù)雜。
  • 實(shí)時(shí)推薦系統(tǒng), 將推薦算法運(yùn)行在jstorm中,達(dá)到秒級的推薦效果

在實(shí)際應(yīng)用中,一般會通過spout與其他系統(tǒng)集成,例如RocketMQ這樣的消息隊(duì)列。對于處理完成的數(shù)據(jù),也可以選擇輸出到db或在bolt中直接導(dǎo)向其他系統(tǒng)做進(jìn)一步處理

紅豆Live推薦算法中召回和排序的應(yīng)用和策略

(召回環(huán)節(jié),又叫匹配環(huán)節(jié),是從海量商品庫里得到的一個(gè)候選商品集合)

第一,對用戶的行為日志進(jìn)行利用 JStorm 實(shí)時(shí)收集,并定時(shí)更新基于 item 的協(xié)同過濾內(nèi)容。

第二,對直播間內(nèi)容進(jìn)行利用 JStorm 實(shí)時(shí)收集,實(shí)時(shí)為直播間打上分類標(biāo)簽、topic、主題詞等標(biāo)簽,并定時(shí)更新用戶畫像內(nèi)容。

第三,對用戶 query 日志利用 JStorm 實(shí)時(shí)收集,定時(shí)計(jì)算用戶 query 的 CTR。

最后,當(dāng)用戶進(jìn)行刷新時(shí),利用召回策略進(jìn)行召回,再根據(jù)排序策略選擇 top N 呈現(xiàn)給用戶。

推薦系統(tǒng)一般是實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì),離線數(shù)據(jù)統(tǒng)計(jì)加權(quán)得到的結(jié)果

Storm流之一個(gè)Spout分發(fā)多個(gè)Bolt

Storm流之多個(gè)Bolt聚合到一個(gè)Bolt

騰訊云推薦系統(tǒng)介紹–百億級通用推薦系統(tǒng)實(shí)踐

總結(jié)

以上是生活随笔為你收集整理的JStorm使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。