3. 離線數據分析流程介紹
注:本環節主要感受數據分析系統的宏觀概念及處理流程,初步理解hadoop等框架在其中的應用環節,不用過於關注代碼細節
一個應用廣泛的數據分析系統:“web日志數據挖掘”
3.1 需求分析
3.1.1 案例名稱
“網站或APP點擊流日志數據挖掘系統”。
3.1.2 案例需求描述
“Web點擊流日志”包含着網站運營很重要的信息,通過日志分析,我們可以知道網站的訪問量,哪個網頁訪問人數最多,哪個網頁最有價值,廣告轉化率、訪客的來源信息,訪客的終端信息等。
3.1.3 數據來源
本案例的數據主要由用戶的點擊行為記錄
獲取方式:在頁面預埋一段js程序,為頁面上想要監聽的標簽綁定事件,只要用戶點擊或移動到標簽,即可觸發ajax請求到后台servlet程序,用log4j記錄下事件信息,從而在web服務器(nginx、tomcat等)上形成不斷增長的日志文件。
形如:
58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0" |
3.2 數據處理流程
3.2.1 流程圖解析
本案例跟典型的BI系統極其類似,整體流程如下:
但是,由於本案例的前提是處理海量數據,因而,流程中各環節所使用的技術則跟傳統BI完全不同,后續課程都會一一講解:
1) 數據采集:定制開發采集程序,或使用開源框架FLUME
2) 數據預處理:定制開發mapreduce程序運行於hadoop集群
3) 數據倉庫技術:基於hadoop之上的Hive
4) 數據導出:基於hadoop的sqoop數據導入導出工具
5) 數據可視化:定制開發web程序或使用kettle等產品
6) 整個過程的流程調度:hadoop生態圈中的oozie工具或其他類似開源產品
3.2.2 項目技術架構圖
3.2.3 項目相關截圖(感性認識,欣賞即可)
a) Mapreudce程序運行
b) 在Hive中查詢數據
c) 將統計結果導入mysql
./sqoop export --connect jdbc:mysql://localhost:3306/weblogdb --username root --password root --table t_display_xx --export-dir /user/hive/warehouse/uv/dt=2014-08-03 |
3.3 項目最終效果
經過完整的數據處理流程后,會周期性輸出各類統計指標的報表,在生產實踐中,最終需要將這些報表數據以可視化的形式展現出來,本案例采用web程序來實現數據可視化
效果如下所示: