用户行为日志概述

用户行为日志:

  • 用户每次访问网站时所有的行为数据
  • 访问、浏览、搜索、点击...
  • 用户行为轨迹、流量日志(用户行为日志的其他名称)

为什么要记录用户访问行为日志:

  • 进行网站页面的访问量的统计
  • 分析网站的黏性
  • 训练推荐系统

用户行为日志生成渠道:

  • web服务器记录的web访问日志
  • ajax记录的访问日志以及其他相关的日志

用户行为日志大致内容:

  • 访问时间
  • 访问者所使用的客户端(UserAgent)
  • 访问者的IP地址
  • 访问者账号
  • 某个页面的停留时间
  • 访问的时间与地点
  • 跳转的链接地址(referer)
  • 访问信息,例如:session_id
  • 模块AppID

用户行为日志分析的意义:

  • 网站的眼睛,能够看到用户的主要来源、喜好网站上的哪些内容,以及用户的忠诚度等
  • 网站的神经,通过分析用户行为日志,我们能对网站的布局、功能进一步的优化,以提高用户的体验等
  • 网站的大脑,通过分析结果,进行推广预算的划分,以及重点优化用户群体的倾向点等

离线数据处理架构

离线数据处理流程:

  • 数据采集
  • 例如可以使用Flume进行数据的采集:将web日志写入到HDFS
  • 数据清洗
  • 可以使用Spark、Hive、MapReduce等框架进行数据的清洗,清洗完之后的数据可以存放在HDFS或者Hive、Spark SQL里
  • 数据处理
  • 按照我们的需求进行相应业务的统计和分析
  • 数据处理结果入库
  • 结果可以存放到RDBMS、NoSQL数据库
  • 数据的可视化展示
  • 通过图形化展示的方式展现出来:饼图、柱状图、地图、折线图等等
  • 工具:ECharts、HUE、Zeppelin

流程示意图:

基于hadoop的互联网日志分析_hadoop


项目需求

需求:

  • 统计网站访问日志中每个浏览器的访问次数

日志片段如下:


功能实现之UserAgent解析类测试

首先我们需要根据日志信息抽取出浏览器信息,针对不同的浏览器进行统计操作。虽然可以自己实现这个功能,但是懒得再造轮子了,所以我在GitHub找到了一个小工具可以完成这个功能,GitHub地址如下:

https://github.com/LeeKemp/UserAgentParser

通过git clone或者浏览器下载到本地后,使用命令行进入到其主目录下,然后通过maven命令对其进行打包并安装到本地仓库里:

安装完成后,在工程中添加依赖以及插件:

然后我们编写一个测试用例来测试一下这个解析类,因为之前并没有使用过这个工具,所以对于一个未使用过的工具,要养成在工程中使用之前对其进行测试的好习惯:

控制台输出结果如下:

从打印结果可以看到,UserAgent的相关信息都正常获取到了,我们就可以在工程中进行使用这个工具了。


使用MapReduce完成需求统计

创建一个类,编写代码如下:

在工程目录下打开控制台,输入如下命令进行打包:

mvn assembly:assembly

打包成功:

基于hadoop的互联网日志分析_基于hadoop的互联网日志分析_02

将这个jar包上传到服务器上:

把事先准备好的日志文件上传到HDFS文件系统中:

执行如下命令

[root@localhost ~]# hadoop jar ./hadoop-train-1.0-jar-with-dependencies.jar org.zero01.hadoop.project.LogApp /10000_access.log /browserout

执行成功:

基于hadoop的互联网日志分析_ci_03

查看处理结果:



转载于:https://blog.51cto.com/zero01/2093820