电商网站日志分析系统总结

电商项目有些烂大街,但是作为学习,目的是通过此项目来学习各个模块的使用。

一. 项目需求及数据流图

需求

通过对网站的apache common日志进行分析,计算该网站的一些关键指标,供运营者进行决策时参考。

开发该系统的目的是为了获取一些业务相关的指标,这些指标在第三方工具中无法获得的。

数据流图

数据来源从js和java端由nginx获取,nginx采用消息队列来接受数据,把日志存放在本地的log文件中。最终将数据存放在HDFS中。通过Flume将本地log数据存放到HDFS中。

数据清洗阶段:ETL,这里使用MapReduce来实现。

经过ETL后,已经成了规则的数据,这里选择把数据放入到HBase中。

使用MapReduce和Hive来对Hbase中的数据进行分析和查询;(结合具体场景来看需要应用哪种技术)

将MapReduce处理好的数据存放入MySQL数据库中,Hive通过sqoop转化到Mysql中。

在这里插入图片描述

二. JS和Java端数据来源

JS中有一个订单事件,是要告诉要触发一个订单了。但在java中是告诉支付成功失败,或者退款成功失败这样一件事。
用阻塞队列进行存储发送的事件:BlockingQueue;
单例模式(多线程下的单例模式)会用到私有的构造方法;
用nginx接收客户端发送过来的请求,这些请求保存在本地的日志中。
需要修改日志的更改情况,
日志记录的是服务端时间;

在这里插入图片描述
nginx能顺利接收到对应的流程数据;

java中传输用kafuka而不是用阻塞队列的方式,来响应请求。

把数据保存成本地的一个数据文件;

数据源发送到nginx中,就是用一个匹配过程,把日志数据暂存下。
把本地log放入hdfs中。

三. Flume(本地log通过flume发送到hdfs)

每一个Flume都是一个agent,每一个agent都有三个组件:source, channel,sinks;

主要是修改对应的配置文件。

flume监控一个本地日志,将监控得本地文件数据放入得hdfs中。

日志首先录入到nginx得本地日志,然后同时向HDFS中发送。

四. ETL

  1. 过滤脏乱差数据;
    通过^A来做分割,后面有4段;将数据输入到HBase中;
    ETL-MR;

  2. ip进行基本解析;

  3. user-agent进行基本解析;

  4. 设计row-key;

五. MapReduce分析模块

统计学生人数:

  • 男生/女生/戴眼镜男生/不戴眼镜男生/戴眼镜女生/不戴眼镜女生/戴眼镜/不戴眼镜
  • 眼镜,男女
    map:做成kv数据;
    reduce:相同kv聚合在一起;
    在这里插入图片描述
    在这里插入图片描述
    map:将输入的值变成kv格式的数据,K–维度组合,V–唯一标识的值

reducee:将相同key的数据聚合到一起,做去重累加操作。

需求–统计新增用户,两个模块:用户基本信息模块和浏览器分析模块。

用户基本信息模块是时间,浏览器分析模块是时间和浏览器信息。

在这里插入图片描述
在这里插入图片描述
将用户基本信息放入user表中;存入不同的表中;
因此把模块名称也当作一个维度,进行统计;

在这里插入图片描述
在这里插入图片描述
当需要添加额外的其他维度的时候,怎么处理?
在这里插入图片描述
MapReduce计算结果存储MysQL中;

新增用户指标;

六. Hive与Hbase整合

七. sqoop的数据导入及导出

八. SQL分析模块

九. 项目总结

数据收集:从PC端的java和js收集数据,并发送到nginx中,记录用户请求,存入本地log中;(一个文件中)
每小时来生成一个文件,把文件移动到指定目录。flume监控某个指定目录,当一个目录文件移动到另一个目录中时,把文件数据读取进来。
把数据文件存入到hdfs中,把hdfs中的数据文件按照天多建了一级目录,保证每天的数据放在指定目录下。当取数据时,就能直接取对应数据;
ETL-MR:抽取,转换,加载;通过MR来完成,或者说通过封装了一个ETL工具;(通过Kettle做数据清洗;)ETL做了什么事情:转了哪些字段,
ETL功能:过滤脏乱数据,IP地址过滤,浏览器信息过滤,row-key的设计;
数据存入了HBase中:平台,时间,浏览器名称,浏览器版本,uuid;
HBase没有分时间,把所有数据放入进去;

通过mapreduce拿数据,放入mysql中。新增用户指标,分析某一天的时间范围;统计活跃用户的指标–;

从Hbase拿到对应数据,用hive去读。做下hive和hbase的一个整合。让hive去分析下hbase中的数据。相当于hive做了hbase的客户端。数据还是存储在hbase中。

把Hive表中数据通过sqoop导入到mysql数据库中,

用户浏览深度的SQL分析;

在线业务该怎么改:接一个kafka进行持久化操作,

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页