实时处理系统:(Flume+Kafka+Storm+hbase+mysql)
为什么要记录访问日志的行为?
通过日志我们可以得到网站页面上的访问量,网站的黏性,推荐用户行为分析,
是指在获得网站访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的归类,
并将这些规律与网络营销策略等相结合,从而发现目前网络营销活动中可能存在的问题,并为进一步修正
或重新制定网络营销策略提供依据。
日志的产生:
- 特定位置,特定行为动作的收集(点击按钮,搜索等事件触发);
- 网址访问触发产生日志数据;
- 从数据库,从网站直接发,爬虫;
- 开发人员特殊位置设置的埋点,不需用户触发事件,即可进行日志数据产生
日志格式:
订单日志格式:
id ip mid 用户名 订单编号 订单地址 订单金额 订单时间 商品类别 商品名 商品价格 商品数据 请求URL 访问状态 关键词。。。。
论坛日志格式:
id ip地址 mid 文章编号 文章类型 请求方式 请求转台 访问模块 请求URL 请求时间。。。。
需求:
- 用户所使用的搜索引擎、关键词、关键关联词、站内关键词
- 用户选择什么样的入口形式(广告或者网站入口链接)更为有效
- 用户访问网站流程,用来分析页面结构设计是否合理;
- 用户在页面上的网页热点图分布数据和网页覆盖图数据;
业务需求:(举例)实时统计某一天的总交易额和每个省份某一天的总交易额
数据分析:(sum_money_日期 总交易额) (sum_money_省份 总交易额)
1.mysql(关系表)
通过ip对应的表join省份对应的表,查询ip对应的省份
2:所需架包
- storm-core 1.2.2
- kafka_2.12 1.1.0
- kafka-clients 1.1.0
- kafka-streams 1.1.0
- storm-kafka 1.2.2
- zookeepr
- cutator-framework 4.0.0
- clojure
- curator-client
- hbase
- hbase-client
- mysql-connect-java
3.编程(强调灵活编程,高效编程)
4.HBASE 启动:1.zookeeper2.hdfs3.hbase
创建sum_money_date表
创建sum_money_province_date
需要将数据保存到HBASE时候,我们使用HBASE API进行操作
API里面有一个API时incrementColumnValue,对统一rowkey下的同一列族下的同一列的值进行累加,而不是覆盖。
另外我们需要获取网络时间,并对时间进行适当的业务处理,格式化成我们想要的,代码中替换上面的date,让时间动态化
5.整合flume-kafka
这里是flume官网提供的,里面有具体的采集方案:http://flume.apache.org/FlumeUserGuide.html#kafka-sink
6.启动kafka-->创建kafka主题-->启动kafka的消费者-->启动生产者(flume)
7.测试
向flume监听的文件里面添加内容,然后观察kafka消费者的状态
8.整合kafka和storm
从kafka中获取数据,在bolt中进行数据清洗,数据分析,保存结果
storm官网里面有javaAPIhttps://storm.apache.org/releases/2.0.0-SNAPSHOT/javadocs/index.html
9.测试
运行主方法,向flume箭筒的文件里面添加内容,观察控制台