⼤数据云计算——⼤数据技术之电商推荐系统源码下载
1 项⽬体系架构设计
1.1系统架构设计
项⽬以推荐系统建设领域知名的经过修改过的中⽂亚马逊电商数据集作为依托,以某电商⽹站真实业务数据架构为基础,构建了符合实践项⽬的⼀体化的电商推荐系统,包含了离线推荐与实时推荐体系,综合利⽤了协同过滤算法以及基于内容的推荐⽅法来提供混合推荐。提供了从前端应⽤、后台服务、算法设计实现、平台部署等多⽅位的闭环的业务实现。
项⽬需求:
1、⽤户可视化:主要负责实现和⽤户的交互以及业务数据的展⽰,主体采⽤AngularJS2进⾏实现,部署在Tomcat服务上。
2、综合业务服务:主要实现JavaEE层⾯整体的业务逻辑,通过Spring进⾏构建,对接业务需求。部署在Tomcat上。
技术分析:
1、数据存储部分
业务数据库:项⽬采⽤⼴泛应⽤的⽂档数据库MongDB作为主数据库,主要负责平台业务逻辑数据的存储。
缓存数据库:项⽬采⽤Redis作为缓存数据库,主要⽤来⽀撑实时推荐系统部分对于数据的⾼速获取需求。
2、离线推荐部分
离线统计服务:批处理统计性业务采⽤Spark Core + Spark SQL进⾏实现,实现对指标类数据的统计任务。
离线推荐服务:离线推荐业务采⽤Spark Core + Spark MLlib进⾏实现,采⽤ALS算法进⾏实现。
3、实时推荐部分
⽇志采集服务:通过利⽤Flume-ng对业务平台中⽤户对于商品的⼀次评分⾏为进⾏采集,实时发送到Kafka集。
消息缓冲服务:项⽬采⽤Kafka作为流式数据的缓存组件,接受来⾃Flume的数据采集请求。并将数据推送到项⽬的实时推荐系统部分。
实时推荐服务:项⽬采⽤Spark Streaming作为实时推荐系统,通过接收Kafka中缓存的数据,通过设计的推荐算法实现对实时推荐的数据处理,并将结构合并更新到MongoDB数据库。
1.2项⽬数据流程
系统初始化部分
1:通过Spark SQL将系统初始化数据加载到MongoDB中。
离线推荐部分
1、可以通过Azkaban实现对于离线统计服务以离线推荐服务的调度,通过设定的运⾏时间完成对任务的触发执⾏。
2、离线统计服务从MongoDB中加载数据,将【商品平均评分统计】、【商品评分个数统计】、【最近商品评分个数统计】三个统计算法进⾏运⾏实现,并将计算结果回写到MongoDB中;
3、离线推荐服务从MongoDB中加载数据,通过ALS算法分别将【⽤户推荐结果矩阵】、【影⽚相似度矩阵】回写到MongoDB中。
实时推荐部分
1、Flume从综合业务服务的运⾏⽇志中读取⽇志更新,并将更新的⽇志实时推送到Kafka中;
2、Kafka在收到这些⽇志之后,通过kafkaStream程序对获取的⽇志信息进⾏过滤处理,获取⽤户评分数据流
【UID|MID|SCORE|TIMESTAMP】,并发送到另外⼀个Kafka队列;
3、Spark Streaming监听Kafka队列,实时获取Kafka过滤出来的⽤户评分数据流,融合存储在Redis中的⽤户最近评分队列数据,提交给实时推荐算法,完成对⽤户新的推荐结果计算;
4、计算完成之后,将新的推荐结构和MongDB数据库中的推荐结果进⾏合并。
业务系统部分
1、推荐结果展⽰部分,从MongoDB中将离线推荐结果、实时推荐结果、内容推荐结果进⾏混合,综合给出相对应的数据。
2、商品信息查询服务通过对接MongoDB实现对商品信息的查询操作。
3、商品评分部分,获取⽤户通过UI给出的评分动作,后台服务进⾏数据库记录后,⼀⽅⾯将数据推动到Redis中,另⼀⽅⾯,通过预设的⽇志框架输出到Tomcat中的⽇志中。
4、商品标签部分,项⽬提供⽤户对商品打标签服务。
1.3数据模型
1、Product【商品数据表】
字段名字段类型字段描述字段备注
productId Int商品的ID
name String商品的名称
免费源码下载网站有哪些categories String商品所属类别每⼀项⽤“|”分割
imageUrl String商品图⽚的URL
tags String商品的UGC标签每⼀项⽤“|”分割
2、Rating【⽤户评分表】
字段名字段类型字段描述字段备注
userId Int⽤户的ID
productId Int商品的ID
score Double商品的分值
timestamp Long评分的时间3
3、Tag【商品标签表】
字段名字段类型字段描述字段备注
userId Int⽤户的ID
productId Int商品的ID
tag String商品的标签
timestamp Long评分的时间
4、User【⽤户表】
字段名字段类型字段描述字段备注
userId Int⽤户的ID
username String⽤户名
password String⽤户密码
timestamp Lon0067⽤户创建的时间
5、RateMoreProductsRecently【最近商品评分个数统计表】
字段名字段类型字段描述字段备注productId Int商品的ID
count Int商品的评分数
yearmonth String评分的时段yyyymm 6、RateMoreProducts【商品评分个数统计表】
字段名字段类型字段描述字段备注productId Int商品的ID
count Int商品的评分数
7、AverageProductsScore【商品平均评分表】
字段名字段类型字段描述字段备注productId Int商品的ID
avg Double商品的平均评分
8、ProductRecs【商品相似性矩阵】
字段名字段类型字段描述字段备注productId Int商品的ID
recs Array[(productId:Int,score:Double)]该商品最相似的商品集合
9、UserRecs【⽤户商品推荐矩阵】
字段名字段类型字段描述字段备注userId Int⽤户的ID
recs Array[(productId:Int,score:Double)]推荐给该⽤户的商品集合
10、StreamRecs【⽤户实时商品推荐矩阵】
字段名字段类型字段描述字段备注userId Int⽤户的ID
recs Array[(productId:Int,score:Double)]实时推荐给该⽤户的商品集合
2 系统项⽬环境构建
2.1项⽬基本的配置
我们的项⽬中⽤到了多种⼯具进⾏数据的存储、计算、采集和传输,本章主要简单介绍设计的⼯具环境搭建。
如果机器的配置不⾜, 推荐只采⽤⼀台虚拟机进⾏配置,⽽⾮完全分布式,将该虚拟机 CPU 的内存设置的尽可能⼤,推荐为 CPU > 4、MEM > 4GB。
2.1 MongoDB(单节点)环境配置
2.2 Redis(单节点)环境配置
2.3 ElasticSearch(单节点)环境配置
2.4 Azkaban(单节点)环境配置
2.5 Spark(单节点)环境配置
2.6 Zookeeper(单节点)环境配置
2.7 Flume-ng(单节点)环境配置
2.8 Kafka(单节点)环境配置
2.2项⽬基本环境的搭建
进⼊到MongoDB的bin ⽬录下 命令:./mongod --config /usr/mongodb/f1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论