互聯網日誌用戶行爲分析

項目需求

  在我們的場景中,Web應用的部署是如下的架構:在這裏插入圖片描述
  即比較典型的Nginx負載均衡+KeepAlive高可用集羣架構,在每臺Web服務器上,都會產生用戶的訪問日誌,日誌格式如下:
在這裏插入圖片描述
根據給定的時間範圍內的日誌數據,統計出每個省每日訪問的PV、UV。

實現步驟

第一步:獲取原生數據

  數據採集工作由運維人員來完成,對於用戶訪問日誌的採集,使用的是Flume,並且會將採集的數據保存到HDFS中,其架構如下:
在這裏插入圖片描述

  可以看到,不同的Web Server上都會部署一個Agent用於該Server上日誌數據的採集,之後,不同Web Server的Flume Agent採集的日誌數據會下沉到另外一個被稱爲Flume Consolidation Agent(聚合Agent)的Flume Agent上,該Flume Agent的數據落地方式爲輸出到HDFS。
  在我們的HDFS中,可以查看到其採集的日誌:
在這裏插入圖片描述

第二步:數據清洗

1、數據清洗目的

  剛剛採集到HDFS中的原生數據,我們也稱爲不規整數據,即目前來說,該數據的格式還無法滿足我們對數據處理的基本要求,需要對其進行預處理,轉化爲我們後面工作所需要的較爲規整的數據,所以這裏的數據清洗,其實指的就是對數據進行基本的預處理,以方便我們後面的統計分析,所以這一步並不是必須的,需要根據不同的業務需求來進行取捨,只是在我們的場景中需要對數據進行一定的處理。

2、數據清洗方案

  原來的日誌數據格式是如下的:
在這裏插入圖片描述

  但是如果需要按照省份來統計uv、pv,其所包含的信息還不夠,我們需要對這些數據做一定的預處理,比如需要,對於其中包含的IP信息,我們需要將其對應的IP信息解析出來;爲了方便我們的其它統計,我們也可以將其request信息解析爲method、 request_url、 http_version等,
  所以按照上面的分析,我們希望預處理之後的日誌數據包含如下的數據字段:

在這裏插入圖片描述
  即在原來的基礎上,我們增加了其它新的字段,如province、city等。
  我們採用MapReduce來對數據進行預處理,預處理之後的結果,我們也是保存到HDFS中,即採用如下的架構:
在這裏插入圖片描述

3、 數據清洗過程

  數據清洗的過程主要是編寫MapReduce程序,而MapReduce程序的編寫又分爲寫Mapper、Reducer、Job三個基本的過程。但是在我們這個案例中,要達到數據清洗的目的,實際上只需要Mapper就可以了,並不需要Reducer,原因很簡單,我們只是預處理數據,在Mapper中就已經可以對數據進行處理了,其輸出的數據並不需要進一步經過Redcuer來進行彙總處理。
  所以下面就直接編寫Mapper和Job的程序代碼。

AccessLogCleanMapper

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

AccessLogCleanJob在這裏插入圖片描述

在這裏插入圖片描述

執行MapReduce程序

  將上面的mr程序打包後上傳到我們的Hadoop環境中,這裏,對2018-04-08這一天產生的日誌數據進行清洗,執行如下命令。
在這裏插入圖片描述
觀察其執行結果。
在這裏插入圖片描述
可以看到MapReduce Job執行成功!

4、數據清洗結果

  上面的MapReduce程序執行成功後,可以看到在HDFS中生成的數據輸出目錄:

在這裏插入圖片描述

  我們可以下載其中一個結果數據文件,並用Notepadd++打開查看其數據信息:

在這裏插入圖片描述

第三步:數據處理

  經過數據清洗之後,就得到了我們做數據的分析統計所需要的比較規整的數據,下面就可以進行數據的統計分析了,即按照業務需求,統計出某一天中每個省份的PV和UV。
  我們依然是需要編寫MapReduce程序,並且將數據保存到HDFS中,其架構跟前面的數據清洗是一樣的:

在這裏插入圖片描述

1、數據處理思路

  現在我們已經得到了規整的數據,關於在於如何編寫我們的MapReduce程序。
  因爲要統計的是每個省對應的pv和uv,pv就是點擊量,uv是獨立訪客量,需要將省相同的數據拉取到一起,拉取到一塊的這些數據每一條記錄就代表了一次點擊(pv + 1),這裏面有同一個用戶產生的數據(通過mid來唯一地標識是同一個瀏覽器,用mid進行去重,得到的就是uv)。

2、數據處理過程

  根據前面的分析,來編寫我們的MapReduce程序。

ProvincePVAndUVMapper

在這裏插入圖片描述

ProvincePVAndUVReducer

在這裏插入圖片描述

ProvincePVAndUVJob

在這裏插入圖片描述
在這裏插入圖片描述

執行MapReduce程序

  將上面的mr程序打包後上傳到我們的Hadoop環境中,這裏,對前面預處理之後的數據進行統計分析,執行如下命令:在這裏插入圖片描述
  觀察其執行結果:

在這裏插入圖片描述
  可以看到MapReduce Job執行成功!

數據處理結果

  上面的MapReduce程序執行成功後,可以看到在HDFS中生成的數據輸出目錄:

在這裏插入圖片描述
  我們可以下載其結果數據文件,並用Notepadd++打開查看其數據信息:
在這裏插入圖片描述

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