作者:幸运幸福一家人1314_332_887 | 来源:互联网 | 2023-10-11 19:13
1.埋点收集数据实现视频01–埋点收集–系统部署架构图和采集流程梳理02–埋点收集–系统部署环境搭建03–埋点收集–方案一–基本功能数据采集实现04–埋点收集–方案二–点击事件
1. 埋点收集数据实现
视频
01–埋点收集–系统部署架构图和采集流程梳理
02–埋点收集–系统部署环境搭建
03–埋点收集–方案一–基本功能数据采集实现
04–埋点收集–方案二–点击事件数据采集实现
05–埋点收集–方案二–中文乱码问题解决
目标
本章先总结整个采集架构的流程原理,再分别从如何部署环境实现页面浏览日志生成,到点击事件的监控记录等操作。
小结
-
系统部署架构图和采集流程梳理
-
部署环境(node01安装httpd,node03安装nginx):
软件位置:day18-项目\软件\网站流量日志自定义采集服务\部署相关
配置文件位置:day18-项目\软件\网站流量日志自定义采集服务\参考文档
安装文档:day18-项目\讲义\hadoop项目–网站流量日志分析–1.pdf
-
方案一:(页面刷新纪录用户数据)
- 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
-
方案二:
- 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。
-
重新编译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响应的数据,这些数据是没有意义的,应该在分析前删除掉;比如在采集的过程中,有些字段无法获取到,需要对这些缺失的字段进行补全等。
小结
- 数据预处理的目标:在分析数据之前,将不规则的数据清洗编程统一规则的结构化数据
- 资料:
...\day19-项目\代码\
- 技术:MapReduce
- 只有数据的清洗,只需要 Map 不要 Reduce 。
- 可以将需要分析的多个字段可以封装成一个对象(实现Writable序列化接口)
- 重写对象的 toString 方法,指定字段之间用
\001
进行分割,因为Hive默认的分隔符就是 \001
- 针对无效的数据 / 静态资源,可以直接过滤,也可以通过建立标记位的形式进行逻辑删除
- 原始访问日志数据(access.log)是按照时间追加的,是散点状的数据;点击流模式所描述的是用户在网站持续访问的一条轨迹,可以通过原始日志数据梳理而来。
- 用户一天访问了好几个页面,如何判断该用户当天访问了该网站几次?
- 通常业界以前后两条的记录的时间差是否在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处理:
-
根据相同 IP 的按时间进行排序
- 计算每个页面停留时间( 当前页进入时间 — 上一页进入时间=上一个页面停留的时间)。如果两个页面之间超过30分钟,其配置新的会话 sessionID。最后一页停留时间默认为60s。
- 为每个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处理:
- 根据相同 session 按 setp 进行排序
- 取出第一条数据和最后一条数据的部分数据输出
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