1 用戶行爲分析

常見問題

  • 項目會涉及到哪些技術?
    • Nginx
    • HDFS
    • Flume
    • MapReduce
    • Scala
    • Spark
    • 可視化展示
  • 需要會哪些編程語言?
    • 具備Java基本知識
    • 具備Html基本知識
    • Scala?會Step by Step講解
  • 需要提前做哪些準備?
    • 準備Linux運行環境
    • 搭建CDH集羣

項目背景

  • 用戶行爲分析需要分析哪些內容?
    在這裏插入圖片描述

你是誰?

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

你從哪裏來

  • 免費流量
    • 直接打開網頁
    • 好友推薦
      • 微信/微博/QQ
    • 友情鏈接
    • 搜索引擎自然流量
  • 付費流量
    • 上網導航
    • 廣告直通車
    • 搜索引擎SEM
  • 爲何要分析用戶來源?
    • 不同流量質量存在差異!

你要到哪裏去?

  • 在瀏覽的過程中會留下各種行爲數據!
    在這裏插入圖片描述
  • 終極目標:促使用戶形成轉化效果
  • 購物類:淘寶、京東、小紅書、拼多多
    • 促進購買
  • 理財類:陸金所、螞蟻財富
    • 促進投資
  • 新聞類:今日頭條
    • 提升閱讀量
  • 視頻類:愛奇藝、騰訊視頻
    • 提升觀看量
    • 購買會員

行爲數據價值

  • 作爲評價指標
  1. 哪個頁面訪問人數最多
  2. 哪個商品最有價值
  • 構建畫像
  1. 用戶屬性畫像
  2. 用戶行爲畫像
  • 促進轉化率
  1. 構建渠道分析模型
  2. 構建廣告點擊模型
  3. 構建商品推薦模型
  • 風險控制
  1. 識別羊毛黨
  2. 團伙欺詐

行爲分析指標

數據指標

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

數據蒐集

  • 需要蒐集哪些行爲數據?
    • 網頁訪問日誌
    • 業務行爲
      • 收藏
      • 評論
      • 添加購物車
      • 下單
      • 支付
    • 點擊行爲
      • 鼠標懸停
      • 按鈕/圖片點擊

數據蒐集面臨的挑戰

  • 所有的訪問行爲均以日誌的形式記錄
    • 日誌文件離散存儲
    • 日誌文件非結構化
    • 記錄數量巨大:TB級每日
  • 數據孤島
    • 文件
      • 訪問日誌
      • 行爲日誌
    • 數據庫:MySQL/Oracle
      • 業務數據

系統架構

工作流程

在這裏插入圖片描述

如何區分用戶和訪問

  • 如何識別用戶?
    • 對於每一次會話均生成唯一的一個uuid
    • 如果用戶在會話期間登入
      • 記錄下uuid和userId之間的關係
    • 如果用戶在會話期間未登入
      • 將uuid作爲訪客的userId
  • HTTP協議是無狀態的,如何保存uuid信息?
    • Cookie方案:客戶端保持機制
      • 優點
        • 服務器壓力少,可支持跨域
      • 缺點
        • 需要瀏覽器支持,對客戶端可見,只能存儲ASCII字符串
    • Session方案:服務器端保持機制
      • 優點
        • 僅在服務器端可見,可以保存任何類型數據
      • 缺點
        • 服務器壓力大,不支持跨域

有些瀏覽器可以關閉Cookie;如果還想用Cookie怎麼辦?
可以在服務端生成一個session id;然後附加到url後面來解決用戶關閉cookie的方案

數據採集

  • 挑戰
    • 數據源多樣化
    • 數據量巨大
    • 保證數據採集的可靠性
    • 避免採集重複數據
    • 保證數據質量
  • 解決方案
    • 從統一的接入層輸出日誌
    • 預定義日誌輸出格式,減少清洗工作
    • 使用Flume作爲數據採集工具
      在這裏插入圖片描述

數據存儲

  • 挑戰
    • 儘可能以低成本存儲海量數據
    • 支持橫向擴容
    • 保證數據高可用
    • 可以快速爲分佈式計算提供數據
  • 解決方案
    • 使用HDFS作爲存儲層
    • 數據按照時間進行分區存儲

數據處理

  • 挑戰
    • 支持分佈式計算
    • 支持橫向擴展
    • 支持容錯
    • 簡單高效的編程模型
    • 多語言支持
  • 解決方案
    • MapReduce
      • 大數據處理框架的工業標準和基石
    • Spark
      • 大規模快速通用計算框架
      • 非常適合迭代類型任務

MapReduce

在這裏插入圖片描述

Spark

  • 一站式解決
    • 離線批處理 ✓
    • 流式計算 ✓
    • 在線實時分析 ✓
      在這裏插入圖片描述

數據展現

  • 挑戰
    • 要漂亮
    • 容易理解
    • 支持交互
    • 幫助挖掘價值
  • 解決方案
    • Echarts
      • 百度開源的可視化圖表組件
    • Tableau(需要money)
      • 商業級可視化數據分析智能工具

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

系統架構

在這裏插入圖片描述

數據流

在這裏插入圖片描述

Nginx配置

Nginx簡介

  • Nginx 是一個高性能的HTTP和反向代理服務器
    • 穩定、輕量、資源佔用率小
    • 可以作爲負載均衡服務器
    • 作爲網站入口統一輸出日誌
  • 安裝
    • Centos
      • sudo yum install nginx
    • Ubuntu
      • sudo apt-get install nginx
  • 主配置文件
    • /etc/nginx/nginx.conf
  • 常用命令
    • service nginx [start|restart|stop|reload]

Nginx負載均衡

  • 配置負載均衡
    • upstream指向Web Server
    • 可以配置多臺服務器
    • 默認使用輪詢方式進行負載均衡
    • 每一個請求按訪問ip的hash結果分配

在這裏插入圖片描述

Nginx UserID模塊

  • 啓用Nginx UserID模塊
    • 使用nginx_http_userid_module模塊跟蹤識別用戶
    • 藉助Cookie

在這裏插入圖片描述

Nginx 配置日誌輸出格式

  • 定義log_format
    在這裏插入圖片描述
  • 配置樣例
log_format acc_log '$remote_addr\t$scheme://$host$request_uri\t$http_referer\t$uid_got\t$time_local';

Nginx 配置樣例

/etc/nginx/conf.d/default.conf(沒有就新建)

server {
# http和https兩個選擇一種
# http監聽80端口
# listen 80 default_server;
# https監聽443端口
listen 443 ssl http2 default_server;
# 需要註釋掉ipv6的監聽
# listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# https需要配置,如果不需要https請註釋
ssl on;
ssl_certificate /etc/nginx/conf.d/ssl.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Forwarded-SSL on;

# 啓用userid模塊
userid on;
userid_name uid;
userid_domain gp-bd.com;
userid_path /;
userid_expires 1h;
proxy_set_header Host $host;
# 日誌配置
access_log /data/log/nginx/nginx_access.log acc_log;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 轉發配置
location / {
proxy_pass http://pool_web;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

log_format acc_log ‘$remote_addr\t$scheme://$host$request_uri\t$http_referer\t$uid_got\t$time_local';
upstream pool_web {
server 127.0.0.1:8000;
ip_hash;
}

nginx啓動失敗如何解決
https://blog.csdn.net/liyuling52011/article/details/80038642

購物車服務搭建

項目數據準備

  • 使用OpenCart搭建電商網站
    • 著名開源電子商務系統
    • 特點
      • 模板化
      • 產品評論
      • 產品評分
      • 優惠券
  • 模擬點擊並蒐集瀏覽行爲日誌

項目數據準備

  • 數據庫準備
    • 安裝MySQL 5.7數據庫
      • sudo apt-get install mysql-server
    • 修改綁定地址
      • sudo vim mysqld.cnf
      • bind-address = 0.0.0.0
      • sudo service mysql restart
    • 進入mysql
      • sudo mysql -uroot -p
    • 創建Database
      • CREATE DATABASE opencart CHARACTER SET utf8 COLLATE utf8_general_ci;
    • 創建用戶opencart
      • CREATE USER ‘opencart’@’%’ IDENTIFIED BY ‘opencarT$123’;
    • 進行相關表權限授權
      • grant all privileges on opencart.* to ‘opencart’@’%’ IDENTIFIED BY ‘opencarT$123’ with grant option;
      • flush privileges;

這裏我們直接使用root用戶。以上只是介紹創建其他用戶。

項目數據準備

  • 使用docker鏡像安裝opencart
  • 什麼是docker?
    • Docker是一個開源的應用容器引擎。
    • 可以將應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的
      Linux機器上。
  • 安裝docker
  • Pull鏡像
    • sudo docker pull vimagick/opencart
  • 啓動容器
    • sudo docker run -d -p 8000:80 vimagick/opencart
    • docker ps 檢查端口映射
      • -i參數=打開STDIN,用於控制檯交互
      • -t參數=分配tty設備,該可以支持終端登錄
      • -p參數=指定容器暴露的端口
      • -d參數=後臺運行
    • sudo docker exec -it {docker container id} /bin/bash

客戶端訪問 注意一定要用域名訪問
直接訪問https://hadoop即可
在這裏插入圖片描述

  • 初始化opencart
    • 數據庫URL
    • 數據庫賬號
    • 數據庫密碼
    • 表前綴名
    • 管理員賬號
    • 管理員密碼
      在這裏插入圖片描述
      注意ip要用docker的
      在這裏插入圖片描述
      回到原始界面,可以隨意點擊商品
      在這裏插入圖片描述
      隨意點擊商品;可查看到輸出日誌;爲下一步分析做準備
      檢查訪問日誌
      tail -f /data/log/nginx/nginx_access.log
      在這裏插入圖片描述
  • opencart管理地址 http://IP:Port/admin/
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章