推荐书籍:《网站分析实战——如何以数据驱动决策,提升网站价值》
1.什么是点击流数据
1.web访问日志
GET/log.gift=item.010001&m=UA-J2011-1&pin=-&uid=1679790178&sid=1679790178|12&v=je=1$sc=24-bit$sr=1600x900$ul=zh-cn$cs=GBK$dt=【云南白药套装】云南白药牙膏180g×3(留兰香型)【行情报价价格评测】-京东$hn=item.jd.com$fl=16.0r0$os=win$br=chrome$bv=39.0.2171.95$wb=1437269412$xb=1449548587$yb=1456186252$zb=12$cb=4$usc=direct$ucp=-$umd=none$uct=-$ct=1456186505411$lt=0$tad=-$sku=1326523$cid1=1316$cid2=1384$cid3=1405$brand=20583$pinid=-&ref=&rm=1456186505411HTTP/1.12.点击流数据模型
点击流这个概念更注重用户浏览网站的整个流程,网站日志中记录的用户点击就像是图上的“点”,而点击流更像是将这些“点”串起来形成的“线”。也可以把“点”认为是网站的Page,而“线”则是访问网站的Session。所以点击流数据是由网站日志中整理得到的,它可以比网站日志包含更多的信息,从而使基于点击流数据统计得到的结果更加丰富和高效。
点击流数据在具体操作上是由散点状的点击日志数据梳理所得,从而,点击数据在数据建模时应该存在两张模型表(Pageviews和visits):
2.点击流数据分析意义
参见文首链接
3.流量分析常见指标
//完整指标参考文首链接
1.处理流程
该项目是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处理流程进行,依此有以下几个大的步骤:
1)数据采集
首先,通过页面嵌入JS代码的方式获取用户访问行为,并发送到web服务的后台记录日志
然后,将各服务器上生成的点击流日志通过实时或批量的方式汇聚到HDFS文件系统中
当然,一个综合分析系统,数据源可能不仅包含点击流数据,还有数据库中的业务数据(如用户信息、商品信息、订单信息等)及对分析有益的外部数据。
2)数据预处理
通过mapreduce程序对采集到的点击流数据进行预处理,比如清洗,格式整理,滤除脏数据等
3)数据入库
将预处理之后的数据导入到HIVE仓库中相应的库和表中
4)数据分析
项目的核心内容,即根据需求开发ETL分析语句,得出各种统计结果
5)数据展现
将分析所得数据进行可视化
2.项目结构
数据采集的需求广义上来说分为两大部分。
1)是在页面采集用户的访问行为,具体开发工作:
1、开发页面埋点js,采集用户访问行为
2、后台接受页面js请求记录日志
此部分工作也可以归属为“数据源”,其开发工作通常由web开发团队负责
2)是从web服务器上汇聚日志到HDFS,是数据分析系统的数据采集,此部分工作由数据分析平台建设团队负责,具体的技术实现有很多方式:
2Shell脚本
优点:轻量级,开发简单
缺点:对日志采集过程中的容错处理不便控制
2Java采集程序
优点:可对采集过程实现精细控制
缺点:开发工作量大
2Flume日志采集框架
成熟的开源日志采集系统,且本身就是hadoop生态体系中的一员,与hadoop体系中的各种框架组件具有天生的亲和力,可扩展性强
数据采集技术选型
flume
采集规则:
调整启动命令,启动即可:
在部署了flume的nginx服务器上,启动flume的agent,命令如下:bin/flume-ngagent--conf./conf-f./conf/weblog.properties.2-nagent//正确匹配配置文件名称与agent名称等.
过滤“不合规”数据
格式转换和规整
根据后续的统计需求,过滤分离出各种不同主题(不同栏目path)的基础数据
核心mapreduce代码:
hadoopjarweblog.jarcn.itcast.bigdata.hive.mr.WeblogPreProcess/weblog/input/weblog/preout