(2)Storm實時日誌分析實戰--Topology的設計
阿新 • • 發佈:2019-01-04
需求
日誌資料樣例:
215.187.202.215 - - [1481945172991] “GET/IBEIfeng.gif?order_id=1&orderTime=1481945172991&memberId=1234568970080798&productInfos=10009-2703.88-B-1|10001-2494.47-D-2|10003-2561.05-A-1&orderAmt=10253.87 HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko)
欄位:
變數名 | 對應資料 |
---|---|
ip | 使用者ip |
serverTime | 伺服器實際 |
requestUrl | 請求地址 |
httpRefer | 對映資訊 |
userAgent | 使用者資訊 |
orderInfo | 訂單資訊 |
需求:
- 統計分析 每天、每小時、每分鐘 各個IP訪問量
- 統計 每天、每小時、每分鐘 被訪問的url 的次數
- 統計 外鏈數
- 解析userAgent獲取得到 瀏覽器資訊 作業系統資訊,統計統計 每天、每小時、每分鐘訪問客戶使用瀏覽器或者作業系統情況
- orderInfo order_id=2&orderTime=1481945173124&memberId=4958868887900989&productInfos=10001-217.40-B-1|10003-2561.05-A-1&orderAmt=2778.44
分析訂單資訊得到基於使用者的消費情況
基於商品
統計銷售額
處理流程
KafaSpout
負責從Kafka叢集讀取日誌資訊
LogParserBolt
將日誌記錄進行解析,抽取出所需的欄位
資料傳遞:
RequestUrlParserBolt
抽取url,獲取orderInfo
資料傳遞:
HttpReferParserBolt
資料傳遞:
UserAgentParserBolt
使用者瀏覽器和作業系統的資訊
資料傳遞:
CountUrlBolt
負責統計url
資料傳遞:
CountOutLinkBolt
統計外部連結
資料傳遞:
CountBrowserBolt
負責統計瀏覽器
資料傳遞:
CountSearchKeyBolt
負責統計搜尋關鍵字
資料傳遞:
CountOsBolt
負責統計使用者作業系統資訊
資料傳遞:
CountIpBolt
統計使用者的ip
資料傳遞:
SaveBolt
負責資料最後的儲存
資料傳遞:
優化
上面有多個負責統計的CountXXXBolt,現在設計一個通用的CountKipBolt
即最後的流程如下: