電商用戶行爲分析大數據平臺相關係列8-數據分析流程

1、離線數據(日誌)分析流程

離線數據分析是一種非實時數據分析,主要是分析日誌、用戶操作歷史或者對已有歷史數據分析。本文將以最常見的日誌分析作爲介紹,其他類似,只是數據收集方式可能不一樣。

1.1、數據來源

數據來源主要依賴於分析系統服務於哪些業務。如,需要分析用戶購物習慣或者分析各個區域熱銷商品,則需要依賴於購物網站的操作日誌或者銷售日誌。而如果是分析各個地區某一時段通話、上網高峯,則數據來源則是運營商監控系統等。
一般情況,數據來源分爲一下兩類:
- 互聯網行業:網站、app、交易系統等
- 傳統行業:電信、上網、電話、發短信等

無論是傳統行業還是互聯網行業,我們執行的每一個動作,網站(app)都會與後臺服務器進行交互,短信、電話等也會與運營商基站、服務器進行交互。所以,我們就可以在服務器端完成日誌記錄。

後臺服務器分類(傳統bs或者cs服務,包括app):
- 非集羣等小型項目:Tomcat、Jetty等通過配置可以將log記錄到指定目錄。也可以在操作業務中實現日誌記錄功能。
- 集羣等高併發應用:Nginx,apache等,一般是通過Nginx等配置記錄session等日誌。當然最終服務也是具體的tomcat等,也可以在tomcat以及業務中記錄日誌。

1.2、日誌整理、收集

服務器將日誌寫到固定目錄中,可能是一個也可能是多個文件,而且對於集羣一般都是多態服務器,所以需要將多份日誌進行整理。我們可以通過一個日誌轉移工具以及一個定時任務完成整理合並。該步驟主要是將當天所有日誌數據採集進行合併處理,最終整理爲一份日誌,以便後續傳輸。

日誌轉移工具可以用python,java等實現。

1.3、日誌傳輸

日誌整理後,就需要專門的收集工具,將其上傳到HDFS或者其他文件系統,統一管理,並便於後續MapReduce或者Spark等進行分析。flume就是比較流程的日誌收集工具,電商用戶行爲分析大數據平臺相關係列6-flume安裝中已經將flume配置完成,通過實時監控/usr/local/logs目錄,如果其中產生新文件,然後flume會將新文件上傳到對應的HDFS集羣。

1.4、日誌存儲、清洗、分區

1.4.1 存儲

大數據分析的日誌信息一般都要保存到分佈式文件系統,如HDFS等。具體原因如下:
- 大型應用生成的日誌量交大,可能一個大型網站每天日質量將達到幾百G或者1T,一般單文件存儲很難滿足這種類型的大文件量存儲。
- 分佈式文件系統容易擴充容量,而且可以做到近似無感知擴容。
- 分佈式文件系統更安全,具有很好的容災能力。分佈式文件系統每一個文件都具有多份備份,且至少有一個備份遠離當前機架或者機房。
- 分佈式文件系統可以很好的支持各種數據倉庫或者分佈式計算框架。如hive或者spark,mapreduce。

1.4.2、清洗

1.4.2.1、清洗原因

flume等收集工具收集的日誌信息可能有些不符合預期,我們稱之爲髒數據,清洗的主要目的就是過濾掉這部分髒數據,在HDFS上保存一份經過清洗的數據。

1.4.2.2、清洗方式

一般是自己開發MapReduce作業,並且使用定時任務來調度。也可以使用Oozie來進行定時調度。

1.4.2.3、清洗結果

將清洗後結果寫入到HDFS的另外一個文件

1.4.3、分區

HDFS數據清洗後,需要導入到Hive的某個表中,可以是動態分區或者使用Hive分區表,每個分區放一天數據。

1.5、數據分析

通常來說,數據分析系統會針對Hive中數據進行分析和開發。這也就意味着Spark的數據來源是Hive中的某些表。根據這些表,我們可以開發特殊的,符合自己業務的大數據平臺,並通過平臺服務數據分析師、管理人員等。

2、實時數據分析流程

實時數據分析其實應該叫做類實時數據分析,因爲暫時還不能將系統產生日誌信息交由數據分析系統分析,還是需要將日誌信息收集到數據分析平臺,然後進行分析。只不過收集頻率不再是一天,而是以分鐘作爲單位收集日誌。

2.1、數據來源

實時數據分析數據來源與離線日誌分析數據來源基本相同。但是,非常重要的一點,就是埋點。也就是說,在網站/app的哪個頁面的哪些操作發生時,前端的代碼(網站,JavaScript;app,android/IOS),就通過網絡請求,(Ajax;socket),向後端的服務器發送指定格式的日誌數據。

2.2、日誌收集

實時數據分析服務端寫日誌與連線分析相同,都是Nginx或者Tomcat等寫日誌信息。

2.3、日誌傳輸

實時分析系統日誌傳輸有兩條同時並行路徑:
- 同離線日誌分析,定期將文件保存到HDFS進行清洗、分區,以便後續連線分析。
- 使用flume以很短的時間片收集日誌信息,如每隔1分鐘收集一次,並將收集內容寫入Kafka等消息隊列,以供實時分析。
- 可以在業務中通過API將日誌信息直接寫入flume,由flume寫入後續環節。

2.4、日誌寫入消息隊列

實時數據一般都是寫入到分佈式消息隊列中,如Kafka。實時數據、日誌實時寫入到消息隊列,後端分析程序可以從消息隊列中獲取具體分析數據進行分析。

2.5、數據分析

大數據實時計算系統,比如說用Storm、Spark Streaming開發的,可以實時的從Kafka中拉取數據,然後對實時的數據進行處理和計算,這裏可以封裝大量複雜的業務邏輯,甚至調用複雜的機器學習、數據挖掘、智能推薦的算法,然後實現實時的車輛調度、實時推薦。

電商用戶行爲分析大數據平臺系列已發佈筆記列表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章