1.4 離線分析系統結構概述

任務目的

  • 瞭解離線分析系統的宏觀概念
  • 理解離線分析系統的處理流程

任務清單

  • 任務1:需求分析
  • 任務2:數據處理流程
  • 任務3:項目最終效果

詳細任務步驟

任務1:需求分析

1.案例名稱

  XX 網/XX app 點擊流日誌數據挖掘系統

  網站分析的主要手段是分析網站的點擊流數據

  (1)點擊流的概念

  點擊流( Click Stream)是指用戶在網站上持續訪問的軌跡。 這個概念更注重用戶瀏覽網站的整個流程。 用戶對網站的每次訪問包含了一系列的點擊動作行爲,這些點擊行爲數據就構成了點擊流數據( Click Stream Data),它代表了用戶瀏覽網站的整個流程。
  總結:點擊流其實就是用戶日常瀏覽網站時產生的日誌信息

  (2)日誌規模分析

  一般中型的網站(10W 以上的PV,即頁面瀏覽量),每天會產生 1G 以上 Web 日誌文件。大型或超大型的網站,可能每小時就會產生 10G 的數據量。 具體來說,比如某電子商務網站,在線團購業務。每日 PV 數 100w,獨立 IP 數5w。用戶通常在工作日上午 10:00-12:00 和下午 15:00-18:00 訪問量最大。日間主要是通 過 PC 端瀏覽器訪問,休息日及夜間通過移動設備訪問較多。網站搜索流量佔整個網站的 80%,PC 用戶不足 1% 的用戶會消費,移動用戶有 5% 會消費。

  對於日誌的這種規模的數據,用 Hadoop 進行日誌分析,是最適合不過的了。

2.案例需求描述

  “Web 點擊流日誌” 包含着網站運營很重要的信息,通過日誌分析,我們可以知道網站的訪問量,哪個網頁訪問人數最多,哪個網頁最有價值,廣告轉化率,訪客來源信息,訪客終端信息等。

  網站分析基礎指標:

  (1)瀏覽量(PV

  定義:Page View,即頁面瀏覽量或點擊量,用戶每打開一個頁面就被記錄1次。

  (2)訪問次數

  定義:訪問次數即Visit,訪客在網站上的會話(Session)次數,一次會話過程中可能瀏覽多個頁面。

  (3)訪客數(UV

  定義:Unique Visitor,即唯一訪客數,一天之內網站的獨立訪客數(以Cookie 爲依據 ),一天內同一訪客多次訪問網站只計算 1 個訪客。

  (4)獨立IP數

  定義:Internet Protocol,指獨立IP數。一天之內,訪問網站的不同獨立IP個數加和。其中同一IP無論訪問了幾個頁面,獨立 IP 數均爲 1。

3.數據來源

  本案例的數據主要由用戶的點擊行爲記錄。

  獲取方式:在頁面預埋一段 js 程序爲頁面上想要監聽的標籤綁定事件,只要用戶點擊或移動到標籤,即可觸發 ajax 請求到後臺 servlet 程序,用 log4j 記錄下事件信息,從而在 Web 服務器(nginx、tomcat 等)上形成不斷增長的日誌文件。 形如:

58.215.204.118 ‐ ‐ [18/Sep/2019: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" 

  字段解析:

  (1)訪客IP地址:58.215.204.118

  (2)訪客用戶信息: - -

  (3)請求時間:[18/Sep/2019:06:51:35 +0000]

  (4)請求方式:GET

  (5)請求的URL:/wp-includes/js/jquery/jquery.js?ver=1.10.2

  (6)請求所用協議:HTTP/1.1

  (7)響應碼:304

  (8)返回的數據流量:0

  (9)訪客的來源URL:http://blog.fens.me/nodejs-socketio-chat/

  (10)訪客所用瀏覽器:Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0

任務2:數據處理流程

1. 流程圖解析

  整體流程如下:

Vditor

 

  該項目是一個純粹的數據分析項目,其整體流程基本上就是依據數據的處理流程進行,依此有以下幾個大的步驟:

  (1)數據採集:定製開發採集程序,或使用開源框架 Flume。將各服務器上生成的點擊流日誌通過實時或批量的方式匯聚到HDFS文件系統中。

  (2)數據預處理:定製開發 MapReduce 程序運行於 Hadoop 集羣。通過MapReduce 程序對採集到的點擊流數據進行預處理,比如清洗、格式整理、濾除髒數據等。

  (3)數據倉庫技術:基於 Hadoop 之上的 Hive。將預處理之後的數據導入到Hive倉庫中相應的庫和表中,根據需求開發ETL分析語句,得出各種統計結果。

  (4)數據導出:基於 Hadoop Sqoop 數據導入導出工具 ,將 Hive中的數據導出到 MySQL等關係型數據庫中。

  (5)數據可視化定製開發 Web 程序或使用 EchartsHighcharts 等產品 。數據展現的目的是將分析所得的數據進行可視化,以便運營決策人員能更方便地獲取數據,更快更簡單地理解數據。

  (6)整個過程的流程調度: Hadoop 生態圈中Oozie/Azkaban 工具或其他類似開源產品

2. 項目整體技術架構圖

  由於本項目是一個純粹數據分析項目,其整體結構亦跟分析流程匹配,並沒有特別複雜的結構,如下圖所示:

Vditor

 

  其中,需要強調的是:系統的數據分析不是一次性的,而是按照一定的時間頻率反覆計算,因而整個處理鏈條中的各個環節需要按照一定的先後依賴關係緊密銜接,即涉及到大量任務單元的管理調度,所以,項目中需要添加一個任務調度模塊

3. 項目相關截圖

  (1)MapReduce運行

Vditor

 

  (2) 數據倉庫 Hive 中查詢數據

Vditor

 

任務3:項目最終效果

  經過複雜的數據處理流程後,會週期性輸出各類統計指標的報表。在生產實踐中,最終需要將這些報表數據以可視化的形式展現出來,市面上有許多開源的數據可視化工具,比如:Echarts。

Vditor

 

  項目最終實現的效果如下所示:

Vditor

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