大规模校园网日志的用户行为分析—(理论分析)

By | 2019年7月29日

思路想法:校园网中存在大量的上网日志,用户的上网日志信息是非常有用的在它里面记录了用户访问网站的行为轨迹、 用户终端信息、位置信息、浏览网页时长等重要信息,可以说是一座巨大的数据金矿。但是校园网日志可能并没有利用起来,如果能对数据进行清洗,开发,分析,挖掘,从中提取出有价值的数据,有助于校园网的优化,管理。
技术点:日志信息的实时流提取,会用到kafka等分布式消息队列。流处理会用到storm或spark的streaming流处理框架,日志信息的存储会用到数据仓库HIVE,以及HBASE。这些事底层数据的处理,清洗并存储后的数据需要用到很多算法去分析用户行为,建立用户画像,结合其他信息,还需要对用户行为进行判断,预测等。

这是我的毕设题目,也经过了一段时间的折腾有大致的雏形可以使用,从数据的产生,处理,展示都已经实现,其实也是整合了三个平台。

sparkstreaming处理数据
data flow离线和实时数据的处理
sanji-boot前台的展现

毕设构思

总的应该分为两部分,

先从思路的服务器写起来

  1. 搭建min centos7系统
  2. 配置大数据环境,Hadoop,flume,kafka,hive
  3. 由于我没有数据日志,使用python模拟不断产生数据集,或者使用服务器中的已有数据日志
  4. 如果是动态生成,则使用flume来不断监听文件,并将数据放到Kafka中
  5. 如果是固定文件,则直接使用程序去处理
  6. flume和kafka的作用就是监听和收集动态文件的信息
  7. 程序的处理方式有两种,一种是打开固定文件,另一种是接收kafka的数据
  8. 对接收到的信息进行固定格式的清洗,这些数据不使用mysql存储,而应该用hive或者是redis,
  9. 用户信息,以及配置信息使用mysql来存储
  10. 最少使用两种数据库,达到数据库层面的复杂度
  11. 前期的展示根据清洗出来的结果,或者网上成熟源码来呈现
  12. 如果没有采用spark和Scala编写,则在介绍中写明遗憾的是
  13. 项目的展望,在GitHub中继续维护
  14. 可以做一个离线处理的mapreduce,实时离线都有,比较完美,最好打成jar包可以直接运行的。
  15. 如果不采用scala
  16. IP校验加入,但不使用,因为都是虚拟数据没有实际验证意义

重点是:校园网日志是不同于其他日志分析的,它相当于流量的出口,会存在各式各样的访问请求

需要看的资料
Hbase结构,最好能自己描述出来
Flume配置文件的含义

为什么使用HBase来存储数据?
在数据量大的情况下存储数据,因为是实时存储数据,在向数据库中写入数据的时候,需要按天来累加访问量,如果使用其他的RDBMS,需要进行多步API操作,先按插入数据,然后按条件查询数据,最后更新数据,这样在一定会使应用程序变慢很多,也消耗系统资源。而如果使用HBase利用它的前缀查询,只需一步API就可以存储相应的数据。

技术选型的确定
在经过一系例的思考,还是决定采用Java,如果使用Scala需要学习和调试的时间太长,spark+stremming作为实时的分析,存到hbase里面
1. 计算任务最好在存入数据库之前,有一个实时的感觉,不用再去数据库里查找。
2. 代码最终是打成jar包放到服务器里运行的。

我的毕设开发流程

目前服务器已经搭好了,kafka可以传递消息,

服务器需要做的

  • flume监控某个日志文件然后传输消息

开发要做的

  1. 完成生成日志文件的脚本(可以复制老师的或者网上的)
  2. 将获取到的消息分流,默认的线程存储到hbase中,而有实时数据请求的时候可以将即将存储的数据拉过来
  3. 然后是各种数据的统计,除了实时数据,其他的去hbase里查找即可

开发要点

分而治之
1. Hbase中,每日一个rowk作为区分,而内部的列簇命名使用字段名,列名采用计数的方式区别,如下
put 'data','2019-04-28','address:1','北京'
2. 我想将项目分为两部分,一部分是sparkstreaming在处理,而另一部分则是springboot来实现的前端展示,这样先实现离线的数据处理,即以查询的方式去直接查hbase数据库。
而实时展示先放下来,等完成这一版再考虑如何去呈现。
3. 2019年5月1日
今天在测试x_springboot的时候发现不能引入hbase的依赖,否则就会与ServletInputStream有冲突
由此我也放弃了在前台来集成数据提取的功能,之前就已经把kafka消费提取来出来,现在决定分为三个模块
sparkstreaming处理数据
data flow离线和实时数据的处理
sanji-boot前台的展现
4. 数据格式

Hbase现在只支持String类型数据的存取
中文存到数据库中是以二进制的形式,取出来的时候需要注意编码转换
5. hbase提取数据时,是全部取出来的

已经完成的

模拟的python脚本,产生各种模拟好的数据
Crontab中添加好十秒执行一次的任务

图表类型

一定要足够丰富
1. 终端设备(windows,安卓,ios)
2. 浏览器信息(谷歌,safar,火狐)
3. 地理位置信息,各省份的,最好有热点信息
4. 访问请求类型(post,get)
5. 网站类型,视频,游戏,购物等等
6. 当前访问量,动态的
7. 不同时段的访问情况柱状图

典型日志信息

发表评论

电子邮件地址不会被公开。 必填项已用*标注