一、项目总体需求、具体设计1、总体需求:捕获用户每天的行为数据,生成业务日志文件,根据日志文件清洗、分析、提取出需要的价值信息(pv:页面浏览量uv:独立访客数独立IP会话时长等),对网站的良好运营提供有价值的指标
2、具体设计2
1捕获(JsSDK)用户行为数据(launch事件、pageView事件、event事件chargerequet事件)2
2将捕获的数据发送给web服务器,生成日志文件(Nginx)2
3将日志文件上传至文件存储系统中(Shell脚本、Flume)2
4在文件存储系统中对日志文件进行清洗,过滤掉脏数据和不需要的字段(MapReucejob任务)2
5将过滤后的日志文件导入到数据库中(HBase)2
6通过MapReduce程序或Hive进行统计分析(Hive)2
7将统计分析后的结果导入到本地数据库中进行永久储存(Mysql)2
8在前端进行展示(SpringMVC+Highcharts)二、项目架构(画图)具体分为三个部分(如下图所示):数据收集层hadoop、hive、flume、kafka、shell数据分析层hive、MapReduce、spark数据展示层springmvc+highcharts三、技术选型、特点、为什么1
JsSDK捕获前端页面数据
Javascript编写页面日志生成与发送工具(原则:保持对业务代码最小影响)特点:采用原生的JavaScript编写,以js文件嵌入到前端,页面触发业务所关注的事件(按照收集数据的不同分为不同的事件)时调用相关方法
Javasdk后台服务日志生成与发送工具JavaSDK代码很简单,可以打成jar包或者直接拷贝类到具体的项目中,正常逻辑处理到JavaSDK所关注的事件后,调用JavaSDK提供的api即可
Nginxweb服务器,产生日志文件特点:Nginx是一个小巧而高效的Lin