网站流量指标统计 对于网站流量指标统计,一般可以分为如下维度: 1.统计每一天的页面访问量。 2.统计每一天的独立访客数(按人头数统计) 3.统计每一天的独立会话数(Session) 收集到如上指标之后,可以按时段来分析网站整体的流量情况
4.按访客地域统计 5.按统计访客ip地址 6.按来路页面分析
综上,本项目统计的指标总结如下: 1.PV,页面访问量。用户点击一次页面,就算做一个PV,刷新操作也算。我们会统计一天内总的PV
2.UV,独立访客数。按人头来统计,我们会统计一天内有多少不同的用户来访问网站。处理思路:当一名用户访问网站时,后台会为此用户生成一个用户id(uvid),然后将uvid存到用户浏览器的cookie里,待下一次此用户访问时,会携带uvid信息。 所以,这个指标实际就是统计一天之内有多少不同的uvid
3.VV,独立会话(Session)数。统计一天之内有多少不同的会话。产生新会话的条件: ①关闭浏览器,再次打开,会产生一个新会话 ②过了会话的操作超时时间(半小时)后,会产生一个新会话
实现思路: 当产生一个新会话时,后台会为此会话生成一个会话id(ssid),然后存到cookie里。 所以统计VV,实际上就是统计一天之内有多少不同的ssid。
4.BR,页面跳出率。BR=跳出会话数/总的会话数(VV)跳出会话指的是:只产生一次访问行为的会话。 所以BR这个指标可以衡量网站的优良性。这个指标越高,说明对用户的吸引力越低,则需要改进
5.NewCust,新增用户数。今天的某个用户在历史数据中从未出现过,则此用户算作一个新增用户。 统计今天的uvid在历史数据中没出现过的数量。 假设今天:2019-09-19 历史数据:<2019-09-19
6.NewIp,新增Ip数。统计今天的ip在历史数据中未出现过的个数。
7.AvgDepp,平均的会话访问深度。AvgDeep=总的会话访问深度/总的会话数(VV)其中,总的会话访问深度=每个会话访问深度的求和。 每个会话的访问深度=访问多少不同的url地址
8.AvgTime,平均的会话访问时长。AvgTime=总的会话访问时长/总的会话数(VV)其中,总的会话时长=每个会话时长的求和。 如何求出每个会话的访问时长。 比如: 会话1: A.jsp时间戳1 B.jsp时间戳2 C.jsp时间戳3 会话2: A.jsp时间戳1 B.jsp时间戳2 C.jsp时间戳3
我们可以统计获取打开页面时的时间戳,统计出每个会话的总的访问时长但是在生产环境,计算的理论值要小于真实值,因为最后一个页面的停留时长无法获取。 统计每个会话的总时长,即:Max TineStamp- Min TimeStamp
================================
以上架构服务搭建于zookeeper集群
tomcat配置
CTRL+s保存配置 新建工程 访问地址
修改js
前端代码
flume配置
启动(flume要比前端服务先启动)
eclipse中hadoop文件乱码解决
==============================
hive做数据的离线处理 hive启动
1.建立总表(外部表+分区表),加载和管理所有的字段数据,比如url, urlname,color…等。 2.为总表添加分区信息。 3.建立清洗表(内部表),清洗出有用的业务字段。 4.从总表中将清洗后的字段数据插入到清洗表 5.建立业务表,用于存储统计后的各个指标,本项目的pv, uv, vv… .
添加分区 方式1
方式2 因为以上分区已经添加好,所以先删除
查询数据验证
创建清洗表
将总表数据插入到清洗表 方式一
方式2,加了条件----日期
查询清洗表的pv(页面访问量)
用户个数
数据处理分解步骤 数据处理 PV:访问量
UV:独立访客数
SV:独立会话数
BR:跳出率
NewIP:新增IP数
NewCust:新增访客数
AvgTime:平均访问时长
AvgDeep:平均访问深度
插入业务表的语句
报错连接拒绝 这是因为DataNode 需要访问 MapReduce JobHistory Server,它的默认端口为0.0.0.0:10020 。
解决
运行之后报错
解决(同时做了内存的扩容) yarn.app.mapreduce.am.staging-dir:mapreduce中间数据和准备数据的存储临时目录
结果