热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网站流量日志分析项目02

1.埋点收集数据实现视频01–埋点收集–系统部署架构图和采集流程梳理02–埋点收集–系统部署环境搭建03–埋点收集–方案一–基本功能数据采集实现04–埋点收集–方案二–点击事件

1. 埋点收集数据实现


视频

01–埋点收集–系统部署架构图和采集流程梳理
02–埋点收集–系统部署环境搭建
03–埋点收集–方案一–基本功能数据采集实现
04–埋点收集–方案二–点击事件数据采集实现
05–埋点收集–方案二–中文乱码问题解决


目标

​ 本章先总结整个采集架构的流程原理,再分别从如何部署环境实现页面浏览日志生成,到点击事件的监控记录等操作。


小结


  1. 系统部署架构图和采集流程梳理
    在这里插入图片描述

  2. 部署环境(node01安装httpd,node03安装nginx):

    软件位置:day18-项目\软件\网站流量日志自定义采集服务\部署相关

    配置文件位置:day18-项目\软件\网站流量日志自定义采集服务\参考文档

    安装文档:day18-项目\讲义\hadoop项目–网站流量日志分析–1.pdf

  3. 方案一:(页面刷新纪录用户数据)

    • node01:在 /var/www/html 下存放 index.html,修改index ma.js所存放的服务器ip(node03)
    • node03:在 nginx安装目录/html 下存放 ma.js ,修改ma.js发送图片请求的ip地址(node03);在 nginx安装目录/conf 下存放 nginx.conf
    • node01 上启动 httpd 服务,node03上启动nginx服务。
    • 刷新index.html页面,监控 logs/access.log
  4. 方案二:

    • node01:在 /var/www/html 下存放 index2.html、page1.html、page2.html、jquery-3.2.1.min.js,修改 index2.html 文件内部 ma.js 地址修改为 node03,其他 ip 地址为 node01 。
    • node03:在 nginx安装目录/html 下存放 ma.js (修改图片请求地址为node03)
    • node03:在 nginx安装目录/conf 下存放 nginx.conf
    • node01 上启动 httpd 服务,node03上启动nginx服务。
    • 监控 logs/user_define.log
    • 刷新index2.html,点击链接1 链接2。
  5. 重新编译Nginx,修复乱码问题:

    day18-项目\软件\网站流量日志自定义采集服务\参考文档\nginx中文乱码\ngx_http_log_module.c 存放到 src/http/modules/ngx_http_log_module.c 源码目录下,安装上文提到的文档重新编译。该操作需要重启nginx,否则无效。


2. Flume日志采集


视频

06–flume收集–新组件taildir source介绍
07–flume收集–配置文件编写和实操
08–flume收集–hdfs–基于文件闲置策略滚动


目标

​ 前一章介绍了数据从无到有的采集,本章介绍如何从 nginx 服务器将数据搬移到 Hadoop 集群上。使用Flume的 taildir source,即可以实现采集不断产生内容的多个日志文件,也可以实现断点续传。


小结


  • flume 新source taildir 特性: exec spooldir

    • 监控一个文件的变化
    • 监控一个文件夹下多个文件的变化
    • 支持断点续传功能 -json
  • 核心配置如下:

    a1.sources = r1
    a1.sources.r1.type = TAILDIR
    a1.sources.r1.positionFile = /var/log/flume/taildir_position.json 记录采集内容偏移量
    a1.sources.r1.filegroups = f1 f2
    a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
    a1.sources.r1.filegroups.f2 = /var/log/test2/.*log.* 支持正则表达式

  • 在使用flume采集数据到 hdfs 的时候,以文件大小(128M)进行控制滚动:

    a1.sinks.k1.hdfs.rollInterval = 0 时间间隔
    a1.sinks.k1.hdfs.rollSize = 134217728 文件的大小
    a1.sinks.k1.hdfs.rollCount = 0 event数量
    a1.sinks.k1.hdfs.idleTimeout=30 数据容量未达到时,超时自动写到文件中


3. 数据清洗和模型构建


视频

09–数据预处理–目的意义和mr编程技巧
10–数据预处理–实现思路详解
11–数据预处理–mr代码实现
12–数据预处理–点击流模型概念


目标

​ Flume采集的数据中包含了一定的杂质,比如404,500响应的数据,这些数据是没有意义的,应该在分析前删除掉;比如在采集的过程中,有些字段无法获取到,需要对这些缺失的字段进行补全等。


小结


  1. 数据预处理的目标:在分析数据之前,将不规则的数据清洗编程统一规则的结构化数据
  2. 资料: ...\day19-项目\代码\
  3. 技术:MapReduce
    • 只有数据的清洗,只需要 Map 不要 Reduce 。
    • 可以将需要分析的多个字段可以封装成一个对象(实现Writable序列化接口)
    • 重写对象的 toString 方法,指定字段之间用 \001 进行分割,因为Hive默认的分隔符就是 \001
    • 针对无效的数据 / 静态资源,可以直接过滤,也可以通过建立标记位的形式进行逻辑删除
  4. 原始访问日志数据(access.log)是按照时间追加的,是散点状的数据;点击流模式所描述的是用户在网站持续访问的一条轨迹,可以通过原始日志数据梳理而来。
  5. 用户一天访问了好几个页面,如何判断该用户当天访问了该网站几次?
    • 通常业界以前后两条的记录的时间差是否在30分钟以内作为会话判断的标准。
    • 所谓点击流模型指的是在一个会话内的持续访问轨迹线。

4. PageView模型&VistView模型


视频

13–数据预处理–点击流模型之pageviews模型
14–数据预处理–点击流模型之visit模型
15–数据预处理–点击流模型pageviews编程实现思路
16–数据预处理–点击流模型pageviews代码实现
17–数据预处理–点击流模型visit编程实现思路
18–数据预处理–点击流模型visit代码实现


目标

​ 上一章介绍到点击流的概念,所谓的点击流模式,描述的是用户在网站持续访问的一条轨迹。通过分析我们可以得到各种各样的指标,比如哪个页面访问频次最高,哪个广告引流效果最好,哪个时间段访问频次最高等等。本章我们先讲解如何构建一个点击流模型及得到相关的模型数据。


小结

PageView模型:主要是计算每一个用户每一次会话内的访问页面的步骤和顺序。Map接收数据:

192.168.1.100 8:30:25 a.html
192.168.1.100 8:30:35 c.html
192.168.1.100 8:31:05 d.html
192.168.1.100 18:31:05 k.html
192.168.1.100 18:31:30 m.html

Map输出:key(ip),value(其他数据)

Reduce处理:


  1. 根据相同 IP 的按时间进行排序

    1. 计算每个页面停留时间( 当前页进入时间 — 上一页进入时间=上一个页面停留的时间)。如果两个页面之间超过30分钟,其配置新的会话 sessionID。最后一页停留时间默认为60s。
    2. 为每个sessionID设置 step。

Reduce输出:sessionID,IP,in_time,pagename,step,stayTime

session1 192.168.1.100 8:30:25 a.html 1 10s
session1 192.168.1.100 8:30:35 c.html 2 30s
session1 192.168.1.100 8:31:05 d.html 3 60ssession2 192.168.1.100 18:31:05 k.html 1 25s
session2 192.168.1.100 18:31:30 m.html 2 60s

VistView模型:计算出用户在一次会话内的操作轨迹

Map输出:key(session),value(其他数据)

Reduce处理:


  1. 根据相同 session 按 setp 进行排序
  2. 取出第一条数据和最后一条数据的部分数据输出

Reduce输出:sessionID,ip,in_page,in_time,out_page,out_time,totalPage

session1 192.168.1.100 a.html 8:30:25 d.html 8:31:05 3
session2 192.168.1.100 k.html 18:31:05 m.html 18:31:30 2

推荐阅读
author-avatar
幸运幸福一家人1314_332_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有