一、主流的批处理和流处理框架
- Hadoop中的MapReduce只能做离线计算,也就是批处理,并且基于磁盘计算,属于IO密集型,Shuffle阶段需要大量算力,并且只有map和reduce。
- Spark作为一个微批处理的大数据计算框架,主要作用就是类似MapReduce,Spark Streaming可以实现传统意义上的流式计算,但是正如开头所说,属于微批处理,并不是完全的实时,但是Spark基于内存运算,计算能力非常强大。
- Storm是真正的流式处理,来一条数据处理一条,但是对于超大流量Storm的处理并不太好。
- 而最近几年兴起的Flink,作为和Spark一样的计算框架,利用Hadoop作为数据存储,利用Flink进行计算,Flink是真正的满足实时性要求的计算框架,可以实现毫秒级的相应,面向真正的流数据,以一行一行为计算单位,速度非常快。
二、Flink相关介绍
批处理和流处理
- 批处理
批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。可以认为处理的是一个固定时间间隔分组的数据点集合。批处理模式中使用的数据集通常符合下列特征:
1. 有界:批处理数据集代表数据的有限集合
2. 持久:数据通常始终存储在某种类型的持久存储位置中
3. 大量:批处理操作通常是处理极为海量数据集的唯一方法 - 流处理
流处理可以对随时进入系统的数据进行计算。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。流处理中的数据集是“无边界”的,这就产生了几个重要的影响:
1. 可以处理几乎无限量的数据,但同一时间只能处理一条数据,不同记录间只维持最少量的状态
2. 处理工作是基于事件的,除非明确停止否则没有“尽头”
3. 处理结果立即可用,并会随着新数据的抵达继续更新
三、电商用户行为分析指标
- 统计分析
1. 点击、浏览
2. 热门商品、近期热门商品、分类热门商品、流量统计 - 偏好统计
1. 收藏、喜欢、评分、打标签
2. 用户画像,推荐列表(结合特征工程和集器学习算法) - 风险控制
1. 下订单、支付、登录
2. 刷单监控,订单失效监控,恶意登录(短时间内频繁登录失败)监控
四、项目环境
Windows10、Centos7(三集群,三台分别都是6G,8核)、Idea2019.3、Maven3.3.9、Flink1.7.2、kafka2.11-2.1.0、sacla2.1.18、jdk1.8
五、项目主要模块
-
热门统计
利用用户的点击浏览行为,进行流量统计、近期热门商品统计等。 -
偏好统计
利用用户的偏好行为,比如收藏、喜欢、评分等,进行用户画像分析,给出个性化的商品推荐列表。 -
风险控制
利用用户的常规业务行为,比如登录、下单、支付等,分析数据,对异常情况进行报警提示。 -
说明
本项目限于数据,只实现热门统计和风险控制中的部分内容,将包括以下四大模块:实时热门商品统计、实时流量统计、恶意登录监控和订单支付失效监控。
由于对实时性要求较高,用flink作为数据处理的框架。综合运用flink的各种API,基于EventTime去处理基本的业务需求,并且使用底层的processFunction,基于状态编程和CEP去处理更加复杂的情形。
五、数据源解析
一共是五份淘宝用户行为数据集,保存为 csv 文件。此数据集包含了淘宝上某一天随机一百万用户的所有行为(包括点击、购买、收藏、喜欢)。数据集的每一行表示一条用户行为,由用户 ID、商品 ID、商品类目 ID、行为类型和时间戳组成,并以逗号分隔,分别保存在每一个分项目的resource中。
六、项目地址
Flink电商用户行为分析系统(用户画像)Github地址
可Fork可Clone