IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四) -> 正文阅读

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

系列文章目录

  1. 初识推荐系统——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一)
  2. 利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二)
  3. 项目主要效果展示——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(三)
  4. 项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)
  5. ……

项目资源下载

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


前言

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


一、系统架构

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

1.1 后台服务部分

  1. 用户可视化:主要负责实现和用户的交互以及业务数据的展示,主体采用 A n g u l a r J S 2 AngularJS2 AngularJS2进行实现,部署在 A p a c h e Apache Apache服务上
  2. 综合业务服务:主要实现 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 数据存储部分

  1. 业务数据库:项目采用广泛应用的文档数据库 M o n g D B MongDB MongDB作为主数据库,主要负责平台业务逻辑数据的存储
  2. 搜索服务器:项目采用 E l a s t i c S e a r c h ElasticSearch ElasticSearch作为模糊检索服务器,通过利用 E S ES ES强大的匹配查询能力实现基于内容的推荐服务
  3. 缓存数据库:项目采用 R e d i s Redis Redis作为缓存服务器,主要用来支撑实时推荐系统部分对于数据的高速获取需求

1.3 离线推荐部分

  1. 离线统计服务:批处理统计性业务采用 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进行实现,实现对指标类数据的统计任务。
  2. 离线推荐服务:离线推荐业务采用 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算法进行实现。
  3. 工作调度服务:对于离线推荐部分需要以一定的时间频率对算法进行调度,采用 A z k a b a n Azkaban Azkaban进行任务的调度

1.4 实时推荐部分

  1. 日志采集服务:通过利用 F l u m e ? n g Flume-ng Flume?ng对业务平台中用户对电影的一次评分行为进行采集,实时发送到 K a f k a Kafka Kafka集群
  2. 消息缓冲服务:项目采用 K a f k a Kafka Kafka作为流式数据的缓存组件,接收来自 F l u m e Flume Flume的数据采集请求。并将数据推送到项目的实时推荐系统部分
  3. 实时推荐服务:项目采用 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 系统初始化部分

  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 离线推荐部分

  1. 通过 A z k a b a n Azkaban Azkaban实现对于离线统计服务以离线推荐服务的调度。通过设定的运行时间完成对任务的触发执行
  2. 离线统计服务从 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 实时推荐部分

  1. 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 UIDMIDSCORETIMESTAMP,并发送到另一个 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 业务系统部分

  1. 推荐结果展示部分从 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. 电影信息查询服务通过对接 M o n g o D B MongoDB MongoDB实现对电影信息的查询操作
  3. 电影评分部分通过获取用户通过 U I UI UI给出的评分动作,后台服务进行数据库记录后,一方面将数据推送到 R e d i s Redis Redis中,另一方面,通过预设的日志框架输出到 T o m c a t Tomcat Tomcat中的日志中
  4. 项目通过 E l a s t i c S e a r c h ElasticSearch ElasticSearch实现对电影的模糊检索
  5. 电影标签部分,项目提供用户对电影打标签服务

三、数据模型

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电影

总结

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:57:41  更:2022-03-21 20:58:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:34:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码