- 点击流(Click Stream)是指用户在网站上持续访问的轨迹,我们通过对网站日志的分析可以获得用户的点击流数据。
- 点击数据在数据建模时存在两张模型表 Pageviews 和 visits
- 网站流量分析模型举例
- 网站流量质量分析 流量并不是越多越好,应该更加看重流量的质量
网站流量多维度细分 细分是指通过不同维度对指标进行分割
网站内容及导航分析
第一个问题:访问者从导航页(首页)还没有看到内容页面之前就从导航页 离开网站,需要分析导航页造成访问者中途离开的原因。 第二个问题:访问者从导航页进入内容页后,又返回到导航页,说明需要分 析内容页的最初设计,并考虑中内容页提供交叉的信息推荐。
- 网站转化以及漏斗分析 ①阻力的流失 比如:不恰当的商品或活动推荐,对支付环节中专业名词的解释、帮助信息等内容不当。 ②迷失 比如在线购买演唱会门票,直到支付也没看到在线选座的提示,这时候就很可能会产生迷失,返回查看。
- 流量分析常见分类 指标是网站分析的基础,用来记录和衡量访问者在网站自的各种行为。
- 骨灰级指标:IP访问网站的不重复 IP 数、PageView页面被加载的总次数、Unique PageView访问网站的不重复用户数
- 基础级指标:访问次数、网站停留时间、页面停留时间
- 复合级指标:人均浏览页数、跳出率(单页访问)、退出率
数据处理流程
- 数据采集:定制开发采集程序,或使用开源框架 Flume
- 数据预处理:定制开发 mapreduce 程序运行于 hadoop 集群
- 数据仓库技术:基于 hadoop 之上的 Hive
- 数据导出:基于 hadoop 的 sqoop 数据导入导出工具
- 数据可视化:定制开发 web 程序(echarts)或使用 kettle 等产品
- 整个过程的流程调度:hadoop 生态圈中的 azkaban 工具或其他类似 开源产品
项目结构
Flume日志采集系统搭建
nginx文件存储日志不会自动地进行切割,都是写在一个文件 access.log 当中,切割需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。
自动切割 shell 脚本 nginx_log.sh:
crontab设置作业(每天零时零分执行)
采集实现
- 在个 web 服务器上部署 agent 节点,修改配置文件
- 启动 agent 节点,将采集到的数据汇聚到指定的 HDFS 目录中
使用aildirSource,可以监控一个目录,并且使用正则表达式匹配该目录中的文件名进行实时收集。
- filegroups:指定 filegroups,可以有多个,以空格分隔;(TailSource 可以同时监控tail 多个目录中的文件)
- positionFile:配置检查点文件的路径,检查点文件会以 json 格式保存已经 tail 文件的位置,解决了断点不能续传的缺陷。
- filegroups.:配置每个 filegroup 的文件绝对路径,文件名可以用正则表达式匹配
主要目的
- 清理不合规无意义的数据
- 格式转换和规整
- 根据后续的统计需求,过滤分离出各种不同主题的基础数据。
维度建模基本概念
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。
- 维度表
- 事实表
事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为准则。
维度建模三种模式
- 星型模式是以事实表为中心,所有的维度表直接连接在事实表上
- 雪花模式的维度表可以拥有其他维度表的
- 星座模式是基于多张事实表的,而且共享维度信息
本项目中数据仓库的设计
- 事实表设计
- 维度表设计
ETL 工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。只有当这些维度/事实表被填充好,ETL工作才算完成。
- 源数据层(ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
- 细节层(DW):为数据仓库层,DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
- 应用层(DA 或 APP):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。
创建ODS层数据表
导入ODS层数据
注:生产环境中应该将数据 load 命令,写在脚本中,然后配置在 azkaban中定时运行,注意运行的时间点,应该在预处理数据完成之后。
生成ODS层明细宽表
1. 流量分析
多维度统计PV总量
按照来访维度统计pv
统计pv总量最大的来源TOPN
人均浏览页数
2. 受访分析 (从页面的角度分析)
各页面访问统计
热门页面统计
3. 访客分析
独立访客
每日新访客
4. 访客Visit分析(点击流模型)
回头/ 单次访客统计
人均访问频次
5. 关键路径转化率分析
转化:在一条指定的业务流程中,各个步骤的完成人数及相对上一个步骤的百分比。
Sqoop 是Hadoop 和关系数据库服务器之间传送数据的一种工具。它是用来从关系数据库如:MySQL,Oracle 到 Hadoop 的 HDFS,并从 Hadoop 的文件系统导出数据到关系数据库。
整个项目的数据按照处理过程,从数据采集到数据分析,再到结果数据的导出,一系列的任务可以分割成若干个 azkaban 的 job 单元,然后由工作流调度器调度执行。shell 脚本大体框架: