需求
日誌數據樣例:
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
即最後的流程如下: