栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)

项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)

系列文章目录
    初识推荐系统——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一)利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二)项目主要效果展示——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(三)项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)基础环境搭建——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(五)……

项目资源下载
    电影推荐系统网站项目源码Github地址(可Fork可Clone)电影推荐系统网站项目源码Gitee地址(可Fork可Clone)电影推荐系统网站项目源码压缩包下载(直接使用)电影推荐系统网站项目源码所需全部工具合集打包下载(spark、kafka、flume、tomcat、azkaban、elasticsearch、zookeeper)电影推荐系统网站项目源数据(可直接使用)电影推荐系统网站项目个人原创论文电影推荐系统网站项目前端代码电影推荐系统网站项目前端css代码

文章目录

系列文章目录项目资源下载前言一、系统架构

1.1 后台服务部分1.2 数据存储部分1.3 离线推荐部分1.4 实时推荐部分 二、数据流程

2.1 系统初始化部分2.2 离线推荐部分2.3 实时推荐部分2.4 业务系统部分 三、数据模型

3.1 电影数据表3.2 用户评分表3.3 电影标签表3.4 用户表3.5 最近电影评分个数统计表3.6 电影评分个数统计表3.7 电影平均评分表3.8 电影相似性矩阵3.9 用户电影推荐矩阵3.10 用户实时电影推荐矩阵3.11 电影类别 T o p 10 Top10 Top10 总结


前言

  今天给大家带来的是项目体系架构设计,包括项目系统架构、项目数据流程、数据模型等。以及整个系统各个功能模块是怎么串联起来的,还有各个软件是怎么相互配合的,最重要的是数据库模型的设计,如果数据库设计不好,会直接影响后面整个系统的运行,下面就开始今天的学习吧!


一、系统架构

  项目以推荐系统建设领域知名的经过修改过的 M o v i e L e n s MovieLens MovieLens数据集作为依托,构建了整个电影推荐系统,包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。提供了从前端应用、后台服务构建、算法设计实现、平台部署等多方位的闭环的业务实现

1.1 后台服务部分
    用户可视化:主要负责实现和用户的交互以及业务数据的展示,主体采用 A n g u l a r J S 2 AngularJS2 AngularJS2进行实现,部署在 A p a c h e Apache Apache服务上综合业务服务:主要实现 J a v a E E JavaEE JavaEE层面整体的业务逻辑,通过 S p r i n g Spring Spring进行构建,对接业务需求。部署在 T o m c a t Tomcat Tomcat上
1.2 数据存储部分
    业务数据库:项目采用广泛应用的文档数据库 M o n g D B MongDB MongDB作为主数据库,主要负责平台业务逻辑数据的存储搜索服务器:项目采用 E l a s t i c S e a r c h ElasticSearch ElasticSearch作为模糊检索服务器,通过利用 E S ES ES强大的匹配查询能力实现基于内容的推荐服务缓存数据库:项目采用 R e d i s Redis Redis作为缓存服务器,主要用来支撑实时推荐系统部分对于数据的高速获取需求
1.3 离线推荐部分
    离线统计服务:批处理统计性业务采用 S p a r k C o r e + S p a r k S q l Spark quad Core quad + quad Spark quad Sql SparkCore+SparkSql进行实现,实现对指标类数据的统计任务。离线推荐服务:离线推荐业务采用 S p a r k C o r e + S p a r k M L l i b Spark quad Core + Spark quad MLlib SparkCore+SparkMLlib进行实现,采用ALS算法进行实现。工作调度服务:对于离线推荐部分需要以一定的时间频率对算法进行调度,采用 A z k a b a n Azkaban Azkaban进行任务的调度
1.4 实时推荐部分
    日志采集服务:通过利用 F l u m e − n g Flume-ng Flume−ng对业务平台中用户对电影的一次评分行为进行采集,实时发送到 K a f k a Kafka Kafka集群消息缓冲服务:项目采用 K a f k a Kafka Kafka作为流式数据的缓存组件,接收来自 F l u m e Flume Flume的数据采集请求。并将数据推送到项目的实时推荐系统部分实时推荐服务:项目采用 S p a r k S t r e a m i n g Spark quad Streaming SparkStreaming作为实时推荐服务,通过接收 K a f k a Kafka Kafka中缓存的数据,通过设计的推荐算法实现对实时推荐的数据处理,并将结构合并更新到 M o n g o D B MongoDB MongoDB数据库
二、数据流程

2.1 系统初始化部分
    通过 S p a r k S Q L Spark quad SQL SparkSQL将系统初始化数据加载到 M o n g o D B MongoDB MongoDB和 E l a s t i c S e a r c h ElasticSearch ElasticSearch中
2.2 离线推荐部分
    通过 A z k a b a n Azkaban Azkaban实现对于离线统计服务以离线推荐服务的调度。通过设定的运行时间完成对任务的触发执行离线统计服务从 M o n g o D B MongoDB MongoDB中加载数据,将电影平均评分统计、电影评分个数统计、最近电影评分个数统计三个统计算法进行运行实现,并将计算结果回写到 M o n g o D B MongoDB MongoDB中,离线推荐服务从 M o n g o D B MongoDB MongoDB中加载数据,通过 A L S ALS ALS算法分别将用户推荐结果矩阵、影片相似度矩阵回写到 M o n g o D B MongoDB MongoDB中
2.3 实时推荐部分
    F l u m e Flume Flume从综合业务服务的运行日志中读取日志更新,并将更新的日志实时推送到 K a f k a Kafka Kafka中, K a f k a Kafka Kafka在收到这些日志后,通过 K a f k a S t r e a m KafkaStream KafkaStream程序对获取的日志信息进行过滤处理,获取用户评分数据流: U I D ∣ M I D ∣ S C O R E ∣ T I M E S T A M P UID|MID|SCORE|TIMESTAMP UID∣MID∣SCORE∣TIMESTAMP,并发送到另一个 K a f k a Kafka Kafka队列, S p a r k S t r e a m i n g Spark quad Streaming SparkStreaming监听 K a f k a Kafka Kafka队列,实时获取 K a f k a Kafka Kafka过滤的出来的用户评分数据流,融合存储在 R e d i s Redis Redis中的用户最近评分队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算,计算完成后,将新的推荐结果和 M o n g o D B MongoDB MongoDB数据库中的推荐结果进行合并
2.4 业务系统部分
    推荐结果展示部分从 M o n g o D B MongoDB MongoDB、 E l a s t i c S e a r c h ElasticSearch ElasticSearch中将离线推荐结果、实时推荐结果、内容推荐结果进行混合,综合给出相对应的数据电影信息查询服务通过对接 M o n g o D B MongoDB MongoDB实现对电影信息的查询操作电影评分部分通过获取用户通过 U I UI UI给出的评分动作,后台服务进行数据库记录后,一方面将数据推送到 R e d i s Redis Redis中,另一方面,通过预设的日志框架输出到 T o m c a t Tomcat Tomcat中的日志中项目通过 E l a s t i c S e a r c h ElasticSearch ElasticSearch实现对电影的模糊检索电影标签部分,项目提供用户对电影打标签服务
三、数据模型 3.1 电影数据表

M o v i e Movie Movie

字段名字段类型字段描述字段备注
midInt电影的ID
nameString电影的名称
descriString电影的描述
timelongString电影的时长
shootString电影拍摄时间
issueString电影发布时间
languageString电影语言
genresString电影所属类别
directorString电影的导演
actorsString电影的演员
3.2 用户评分表

R a t i n g Rating Rating

字段名字段类型字段描述字段备注
uidInt用户的ID
midInt电影的ID
scoreDouble电影的分值
timestampLong评分的时间
3.3 电影标签表

T a g Tag Tag

字段名字段类型字段描述字段备注
uidInt用户的ID
midInt电影的ID
tagString电影的标签
timestampLong评分的时间
3.4 用户表

U s e r User User

字段名字段类型字段描述字段备注
uidInt用户的ID
usernameString用户名
passwordString用户密码
firstboolean用于是否第一次登录
genresList用户偏爱的电影类型
timestampLong用户创建的时间
3.5 最近电影评分个数统计表

R a t e M o r e M o v i e s R e c e n t l y RateMoreMoviesRecently RateMoreMoviesRecently

字段名字段类型字段描述字段备注
midInt电影的ID
countInt电影的评分数
yeahmonthString评分的时段201507
3.6 电影评分个数统计表

R a t e M o r e M o v i e s RateMoreMovies RateMoreMovies

字段名字段类型字段描述字段备注
midInt电影的ID
countInt电影的评分数
3.7 电影平均评分表

A v e r a g e M o v i e s S c o r e AverageMoviesScore AverageMoviesScore

字段名字段类型字段描述字段备注
midInt电影的ID
avgDouble电影的平均评分
3.8 电影相似性矩阵

M o v i e R e c s MovieRecs MovieRecs

字段名字段类型字段描述字段备注
midInt电影的ID
recsArray[(mid:Int,score:Double)]该电影最相似的电影集合
3.9 用户电影推荐矩阵

U s e r R e c s UserRecs UserRecs

字段名字段类型字段描述字段备注
uidInt用户的ID
recsArray[(mid:Int,score:Double)]推荐给该用户的电影集合
3.10 用户实时电影推荐矩阵

S t r e a m R e c s StreamRecs StreamRecs

字段名字段类型字段描述字段备注
uidInt用户的ID
recsArray[(mid:Int,score:Double)]实时推荐给该用户的电影集合
3.11 电影类别 T o p 10 Top10 Top10

G e n r e s T o p M o v i e s GenresTopMovies GenresTopMovies

字段名字段类型字段描述字段备注
genresString电影类型
recsArray[(mid:Int,score:Double)]TOP10电影

总结

  这篇博文也终于结束了,这篇文章主要介绍的是整个系统的架构设计以及整个系统的数据流程和数据模型,只有设计好这些,整个系统的搭建才能比较顺利,后面就要真刀真枪的做整个系统了,下一篇文章会给大家带来项目的基础环境搭建!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号