项目介绍
整体架构:hadoop, hfds, hbase, hive, flume, sqoop, oozie
- 日志收集
- 数据分析: ETL, MR_Job, Hive 分析,存储到Hbase或MySQL
- 数据展示:SpringBoot, Mybatis, Hicharts, 访客访问量,活跃数量,比率,地区热力图
项目综述
项目划分为lv_track,lv_transforer 和 lv_dataapi 三个分析模块
本次项目主要以分析七个模块的数据,分别为用户基本信息分析、操作系统分析、地域信息分析、用户浏览深度分析、外链数据分析、订单信息分析以及事件分析。
针对不同的分析模块,有不同的用户数据需求,所以我们
- 在 lv_track 项目中提供不同的客户端来收集不同的数据
- 在lv_transformer 中分别采用 hive+mr 两种方式进行数据分析
- 在 lv_dataapi 中进行分析结果的api提供以及结果图表展示
收集系统(lv_track)
将用户浏览的数据采集到我们的存储系统(hdfs),只收集pc端数据和程序后台的部分数据。在pc端我们通过集成js来收集用户浏览行为数据;在程序后台,通过集成java的jar文件来收集我们需要的数据。在这里只考虑java开发环境。js/jar将收集的数据发送到nginx,然后flume监控nginx日志,将数据写入到hdfs中
java sdk
订单信息的分析由于需要明确是否进行支付,需要程序后台发送消息通知,故只有订单分析模块需要在后台程序中调用。
在本次项目中java sdk的作用主要就是发送支付/退款成功的信息给 nginx服务器
工作流如下所示:(退款类似)
1、程序后台事件分析
chargeSuccess事件,本事件的主要作用是发送订单成功的信息给nginx服务器。发送格式同pc端发送方式, 也是访问同一个url来进行数据的传输。格式为: http://track.lv.com/static/img.jpg?requestdata=
最终分析模块 | PC端js sdk事件 | ||
订单信息分析 | chargeSuccess事件 chargeRefund事件 |
a) chargeSuccess事件
当会员最终支付成功的时候触发该事件,该事件需要程序主动调用
方法名称 | onChargeSuccess | ||
发送的数据 | u_mid=liu&c_time=1449142044528&oid=123&ver=1&en=e_cs&pl=jdk&sdk=java | ||
参数 | 类型 | 是否必填 | 描述 |
orderId | string | 是 | 订单id |
memberId | string | 是 | 会员id |
b) chargeRefund事件
当会员进行退款操作的时候触发该事件,该事件需要程序主动调用
2、集成方式:直接将java的sdk引入到项目中即可
3、数据参数说明
参数名称 | 类型 | 描述 |
en | string | 事件名称, eg: e_cs |
ver | string | 版本号, eg: 0.0.1 |
pl | string | 平台, eg: website |
sdk | string | Sdk类型, eg: java |
u_mid | string | 会员id,和业务系统一致 |
c_time | string | 客户端时间 |
oid | string | 订单id |
js sdk 数据收集引擎
本次的重点就是分析pc端的数据,七个模块基本上都需要从pc端获取不同的数据
新用户:在cookie中填充一个uuid来标示用户的唯一性(不用IP)
按照收集数据的不同分为不同的事件,比如pageview事件等。Js sdk的执行流程如下:
1、PC端事件分析
- 用户基本信息:用户浏览行为信息分析,即 pageview事件
- 浏览器信息分析以及地域信息分析:在用户基本信息分析的基础上添加浏览器和地域维度信息,其中浏览器信息我们可以通过浏览器的 window.navigator.userAgent 来进行分析,地域信息可以通过ip地址来进行分析,pageview事件也可以满足这两个模块的分析
- 外链数据分析以及用户浏览深度分析:在pageview事件中添加当前页面url和前一个页面的url来处理分析,pageview事件也可以满足
- 订单信息分析:要求pc端发送一个订单产生的事件,对应这个模块的分析,需要一个新的事件chargeRequest。对于事件分析我们也需要一个pc端发送一个新的事件数据,可以定义为event。除此之外,还需要设置一个launch事件来记录新用户的访问
不同事件发送的数据url格式如下,url中后面的参数就是我们收集到的数据:http://track.lv.com/static/bfimg.jpg?requestdata
最终分析模块 | js sdk事件 |
用户基本信息分析 | pageview事件 |
浏览器信息分析 | |
地域信息分析 | |
外链数据分析 | |
用户浏览深度分析 | |
订单信息分析 | chargeRequest事件 |
事件分析 | event事件 |
| launch事件 |
a) Launch事件
用户第一次访问网站的时候触发该事件,不提供对外调用的接口
方法名称 | - |
发送的数据 | u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263& c_time=1449137597974&ver=1&en=e_l&pl=website&sdk=js&b_rst=1920*1080& u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F& b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20 (KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1& l=zh-CN |
b) Pageview事件
用户访问页面/刷新页面的时候触发该事件,自动调用
方法名称 | onPageView |
发送的数据 | ver=1&en=e_pv&pl=website&sdk=js&b_rst=1920*1080& u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F& b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20 (KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1& l=zh-CN&u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597979& ht=www.bb.com%3A8080&p_url=http%3A%2F%2Fwww.bb.com%3A8080%2Fvst_track%2Findex.html |
c) chargeRequest事件
用户下订单的时候触发该事件,该事件需要程序主动调用
方法名称 | onChargeRequest | ||
参数 | 类型 | 是否必填 | 描述 |
orderId | string | 是 | 订单id |
orderName | String | 是 | 产品购买描述名称 |
currencyAmount | double | 是 | 订单价格 |
currencyType | String | 是 | 货币类型 |
paymentType | String | 是 | 支付方式 |
d) Event事件
当访客/用户触发业务定义的事件后,前端程序调用该方法
方法名称 | onEventDuration | ||
参数 | 类型 | 是否必填 | 描述 |
category | string | 是 | 自定义事件名称 |
action | String | 是 | 自定义事件动作 |
map | map | 否 | 其他参数 |
duration | long | 否 | 事件持续时间 |
2、其他api方法
方法名称 | setMemberId() //设置会员id | ||
方法描述 | 该方法的主要作用是设置会员id,当会员登录后,请调用该方法进行会员id的设置。 | ||
参数 | 类型 | 是否必填 | 描述 |
memberid | string | 是 | 会员id |
3、集成方式
引入js即可
4、数据参数说明
可能用到的参数描述如下:
参数名称 | 类型 | 描述 |
en | string | 事件名称, eg: e_pv |
ver | string | 版本号, eg: 0.0.1 |
pl | string | 平台, eg: website |
sdk | string | Sdk类型, eg: js |
b_rst | string | 浏览器分辨率,eg: 1800*678 |
b_iev | string | 浏览器信息useragent |
u_ud | string | 用户/访客唯一标识符 |
l | string | 客户端语言 |
u_mid | string | 会员id,和业务系统一致 |
u_sd | string | 会话id |
c_time | string | 客户端时间 |
p_url | string | 当前页面的url |
p_ref | string | 上一个页面的url |
tt | string | 当前页面的标题 |
ca | string | Event事件的Category名称 |
ac | string | Event事件的action名称 |
kv_* | string | Event事件的自定义属性,map |
du | string | Event事件的持续时间 |
oid | string | 订单id |
on | string | 订单名称 |
cua | string | 支付金额 |
cut | string | 支付货币类型 |
pt | string | 支付方式 |