大数据技术之电商推荐系统Word下载.docx
- 文档编号:19035795
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:65
- 大小:181.57KB
大数据技术之电商推荐系统Word下载.docx
《大数据技术之电商推荐系统Word下载.docx》由会员分享,可在线阅读,更多相关《大数据技术之电商推荐系统Word下载.docx(65页珍藏版)》请在冰豆网上搜索。
并将数据推送到项目的实时推荐系统部分。
实时推荐服务:
项目采用SparkStreaming作为实时推荐系统,通过接收Kafka中缓存的数据,通过设计的推荐算法实现对实时推荐的数据处理,并将结构合并更新到MongoDB数据库。
1.2项目数据流程
【系统初始化部分】
0.通过SparkSQL将系统初始化数据加载到MongoDB中。
【离线推荐部分】
1.可以通过Azkaban实现对于离线统计服务以离线推荐服务的调度,通过设定的运行时间完成对任务的触发执行。
2.离线统计服务从MongoDB中加载数据,将【商品平均评分统计】、【商品评分个数统计】、【最近商品评分个数统计】三个统计算法进行运行实现,并将计算结果回写到MongoDB中;
离线推荐服务从MongoDB中加载数据,通过ALS算法分别将【用户推荐结果矩阵】、【影片相似度矩阵】回写到MongoDB中。
3.Flume从综合业务服务的运行日志中读取日志更新,并将更新的日志实时推送到Kafka中;
Kafka在收到这些日志之后,通过kafkaStream程序对获取的日志信息进行过滤处理,获取用户评分数据流【UID|MID|SCORE|TIMESTAMP】,并发送到另外一个Kafka队列;
SparkStreaming监听Kafka队列,实时获取Kafka过滤出来的用户评分数据流,融合存储在Redis中的用户最近评分队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算;
计算完成之后,将新的推荐结构和MongDB数据库中的推荐结果进行合并。
【业务系统部分】
4.推荐结果展示部分,从MongoDB中将离线推荐结果、实时推荐结果、内容推荐结果进行混合,综合给出相对应的数据。
5.商品信息查询服务通过对接MongoDB实现对商品信息的查询操作。
6.商品评分部分,获取用户通过UI给出的评分动作,后台服务进行数据库记录后,一方面将数据推动到Redis群中,另一方面,通过预设的日志框架输出到Tomcat中的
日志中。
7.商品标签部分,项目提供用户对商品打标签服务。
1.3数据模型
1.Product【商品数据表】
字段名
字段类型
字段描述
字段备注
productId
Int
商品的ID
name
String
商品的名称
categories
商品所属类别
每一项用“|”分割
imageUrl
商品图片的URL
tags
商品的UGC标签
2.Rating【用户评分表】
userId
用户的ID
score
Double
商品的分值
timestamp
Long
评分的时间
3.Tag【商品标签表】
tag
商品的标签
4.User【用户表】
username
用户名
password
用户密码
Lon0067
用户创建的时间
5.RateMoreProductsRecently【最近商品评分个数统计表】
count
商品的评分数
yearmonth
评分的时段
yyyymm
6.RateMoreProducts【商品评分个数统计表】
7.AverageProductsScore【商品平均评分表】
avg
商品的平均评分
8.ProductRecs【商品相似性矩阵】
字段备注
recs
Array[(productId:
Int,score:
Double)]
该商品最相似的商品
集合
9.UserRecs【用户商品推荐矩阵】
字段名
推荐给该用户的商品集
合
10.StreamRecs【用户实时商品推荐矩阵】
字段
字段备
名
注
实时推荐给该用户的商
品集合
第2章工具环境搭建
我们的项目中用到了多种工具进行数据的存储、计算、采集和传输,本章主要简单介绍设计的工具环境搭建。
如果机器的配置不足,推荐只采用一台虚拟机进行配置,而非完全分布式,将该虚拟机CPU的内存设置的尽可能大,推荐为CPU>
4、MEM>
4GB
2.1MongoDB(单节点)环境配置
//通过WGET下载Linux版本的MongoDB[bigdata@linux~]$wgethttps:
//fastdl.mongodb.org/linux/mongodb-linux-x8664-rhel62-3.
4.3.tgz
//将压缩包解压到指定目录[bigdata@linuxbackup]$tar-xfmongodb-linux-x86_64-rhel62-3.4.3.tgz-C~///将解压后的文件移动到最终的安装目录[bigdata@linux~]$mvmongodb-linux-x86_64-rhel62-3.4.3//usr/local/mongodb
//在安装目录下创建data文件夹用于存放数据和日志[bigdata@linuxmongodb]$mkdir/usr/local/mongodb/data///在data文件夹下创建db文件夹,用于存放数据[bigdata@linuxmongodb]$mkdir/usr/local/mongodb/data/db///在data文件夹下创建logs文件夹,用于存放日志[bigdata@linuxmongodb]$mkdir/usr/local/mongodb/data/logs/
//在logs文件夹下创建log文件
[bigdata@linuxmongodb]$touch/usr/local/mongodb/data/logs/mongodb.log
//在data文件夹下创建mongodb.conf配置文件[bigdata@linuxmongodb]$touch/usr/local/mongodb/data/mongodb.conf
//在mongodb.conf文件中输入如下内容[bigdata@linuxmongodb]$vim./data/mongodb.conf
#端口号port=27017
#数据目录
dbpath=/usr/local/mongodb/data/db
#日志目录
logpath=/usr/local/mongodb/data/logs/mongodb.log
#设置后台运行fork=true
#日志输出方式logappend=true
#开启认证
#auth=true
完成MongoDB的安装后,启动MongoDB服务器:
//启动MongoDB服务器
[bigdata@linuxmongodb]$sudo/usr/local/mongodb/bin/mongod-config/usr/local/mongodb/data/mongodb.conf
//访问MongoDB服务器
[bigdata@linuxmongodb]$/usr/local/mongodb/bin/mongo
//停止MongoDB服务器
[bigdata@linuxmongodb]$sudo/usr/local/mongodb/bin/mongod-shutdown-config/usr/local/mongodb/data/mongodb.conf
2.2Redis(单节点)环境配置
//通过WGET下载REDIS的源码
[bigdata@linux~]$wgethttp:
//download.redis.io/releases/redis-4.0.2.tar.gz
//将源代码解压到安装目录
[bigdata@linux~]$tar-xfredis-4.0.2.tar.gz-C~/
//进入Redis源代码目录,编译安装
[bigdata@linux~]$cdredis-4.0.2/
//安装GCC
[bigdata@linux~]$sudoyuminstallgcc
//编译源代码
[bigdata@linuxredis-4.0.2]$makeMALLOC=libc
//编译安装
[bigdata@linuxredis-4.0.2]$sudomakeinstall
//创建配置文件
[bigdata@linuxredis-4.0.2]$sudocp~/redis-4.0.2/redis.conf
/etc/
//修改配置文件中以下内容
[bigdata@linuxredis-4.0.2]$sudovim/etc/redis.confdaemonizeyes#37行#是否以后台daemon方式运行,默认不是后台运行pidfile/var/run/redis/redis.pid#41行#redis的PID文件路径(可选)bind0.0.0.0#64行#绑定主机IP,默认值为127.0.0.1,我们是跨机器运行,所以需要更改
logfile/var/log/redis/redis.log#104行#定义log文件位置,模式log信息定向到stdout,输出到/dev/null(可选)
dir“/usr/local/rdbfile”#188行#本地数据库存放路径,默认为./,编译
安装默认存在在/usr/local/bin下(可选)
在安装完Redis之后,启动Redis
//启动Redis服务器
[bigdata@linuxredis-4.0.2]$redis-server/etc/redis.conf//连接Redis服务器
[bigdata@linuxredis-4.0.2]$redis-cli
//停止Redis服务器
[bigdata@linuxredis-4.0.2]$redis-clishutdown
2.3Spark(单节点)环境配置
//通过wget下载zookeeper安装包
[bigdata@linux~]$wget
//将spark解压到安装目录
[bigdata@linux~]$tar–xfspark-2.1.1-bin-hadoop2.7.tgz–C./cluster
//进入spark安装目录
[bigdata@linuxcluster]$cdspark-2.1.1-bin-hadoop2.7/
//复制slave配置文件
[bigdata@linuxspark-2.1.1-bin-hadoop2.7]$cp./conf/slaves.template./conf/slaves//修改slave配置文件
[bigdata@linuxspark-2.1.1-bin-hadoop2.7]$vim./conf/slaveslinux#在文件最后将本机主机名进行添加
cp./conf/spark-env.sh.template./conf/s
#添加sparkmaster的主机名
#添加sparkmaster的端口号
//复制Spark-Env配置文件[bigdata@linuxspark-2.1.1-bin-hadoop2.7]$park-env.shSPARK_MASTER_HOST=linuxSPARK_MASTER_PORT=7077
安装完成之后,启动Spark//启动Spark集群
[bigdata@linuxspark-2.1.1-bin-hadoop2.7]$sbin/start-all.sh
//访问Spark集群,浏览器访问http:
//linux:
8080
//关闭Spark集群
[bigdata@linuxspark-2.1.1-bin-hadoop2.7]$sbin/stop-all.sh
2.4Zookeeper(单节点)环境配置
[bigdata@linux~]$wget-3.4.10.tar.gz
//将zookeeper解压到安装目录
[bigdata@linux~]$tar–xfzookeeper-3.4.10.tar.gz–C./cluster
//进入zookeeper安装目录
[bigdata@linuxcluster]$cdzookeeper-3.4.10/
//创建data数据目录
[bigdata@linuxzookeeper-3.4.10]$mkdirdata/
//复制zookeeper配置文件
[bigdata@linuxzookeeper-3.4.10]$cp./conf/zoo_sample.cfg./conf/zoo.cfg//修改zookeeper配置文件
[bigdata@linuxzookeeper-3.4.10]$vimconf/zoo.cfgdataDir=/home/bigdata/cluster/zookeeper-3.4.10/data#将数据目录地址修改为创建的目录
//启动Zookeeper服务
[bigdata@linuxzookeeper-3.4.10]$bin/zkServer.shstart
//查看Zookeeper服务状态
[bigdata@linuxzookeeper-3.4.10]$bin/zkServer.shstatus
ZooKeeperJMXenabledbydefault
Usingconfig:
/home/bigdata/cluster/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode:
standalone
//关闭Zookeeper服务
[bigdata@linuxzookeeper-3.4.10]$bin/zkServer.shstop
2.5Flume-ng(单节点)环境配置
//通过wget下载zookeeper安装包[bigdata@linux~]$wgethttp:
//www.apache.org/dyn/closer.lua/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
[bigdata@linux~]$tar–xfapache-flume-1.8.0-bin.tar.gz–C./cluster
//等待项目部署时使用
2.6Kafka(单节点)环境配置
[bigdata@linux~]$wget
0.10.2.1/kafka_2.11-0.10.2.1.tgz//将kafka解压到安装目录
[bigdata@linux~]$tar–xfkafka_2.12-0.10.2.1.tgz–C./cluster
//进入kafka安装目录
[bigdata@linuxcluster]$cdkafka_2.12-0.10.2.1/
//修改kafka配置文件
[bigdata@linuxkafka_2.12-0.10.2.1]$vimconfig/server.propertieshost.name=linux#修改主机名
port=9092#修改服务端口号
zookeeper.connect=linux:
2181#修改Zookeeper服务器地址
//启动kafka服务!
!
启动之前需要启动Zookeeper服务
[bigdata@linuxkafka_2.12-0.10.2.1]$bin/kafka-server-start.sh
-daemon./config/server.properties
//关闭kafka服务
[bigdata@linuxkafka_2.12-0.10.2.1]$bin/kafka-server-stop.sh
//创建topic
[bigdata@linuxkafka_2.12-0.10.2.1]$bin/kafka-topics.sh--create
--zookeeperlinux:
2181--replication-factor1--partitions1--topicrecommender
//kafka-console-producer
[bigdata@linuxkafka_2.12-0.10.2.1]$bin/kafka-console-producer.sh
--broker-listlinux:
9092--topicrecommender
//kafka-console-consumer
[bigdata@linuxkafka_2.12-0.10.2.1]$bin/kafka-console-consumer.sh
--bootstrap-serverlinux:
第3章创建项目并初始化业务数据
我们的项目主体用Scala编写,采用IDEA作为开发环境进行项目编写,采用maven作为项目构建和管理工具。
3.1在IDEA中创建maven项目
打开IDEA,创建一个maven项目,命名为ECommerceRecommendSystem。
为了方便后期的联调,我们会把业务系统的代码也添加进来,所以我们可以以
ECommerceRecommendSystem作为父项目,并在其下建一个名为recommender的子项目,然后再在下面搭建多个子项目用于提供不同的推荐服务。
3.1.1项目框架搭建
在ECommerceRecommendSystem
新建一个
mavenmodule作为子项目,命名
mavenmodule作
DataLoader。
为recommender。
同样的,再以recommender为父项目,新建一个为子项目。
我们的第一步是初始化业务数据,所以子项目命名为
父项目只是为了规范化项目结构,方便依赖管理,本身是不需要代码实现的,
所以ECommerceRecommendSystem和recommender下的src文件夹都可以删掉。
目前的整体项目框架如下:
3.1.2声明项目中工具的版本信息
我们整个项目需要用到多个工具,它们的不同版本可能会对程序运行造成影响,所以应该在最外层的ECommerceRecommendSy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 技术 推荐 系统