# 基于用户画像的电影推荐系统 **Repository Path**: grx330/MovieRecommendSystem ## Basic Information - **Project Name**: 基于用户画像的电影推荐系统 - **Description**: 毕业设计:基于用户画像的电影推荐系统的设计与实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-06-15 - **Last Updated**: 2025-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 前言 **如果没有Linux,Java,前端的基础,且没有开发过一个完整的web项目,就不推荐学习本项目了。** 演示视频地址:https://www.bilibili.com/video/BV1LmVie9EJe 前端项目地址:https://gitee.com/grx330/MRSwebsite # 项目环境 ![](./READMEimg/14.jpg) # 启动命令 ## 前端 安装依赖包 yarn install 启动 yarn serve ## 虚拟机 关闭防火墙 ```bash sudo firewall-cmd --state sudo systemctl stop firewalld.service ``` ### 1.mongodb mongodb目录下: 启动:bin/mongod -config ./data/mongodb.conf 连接:bin/mongo 关闭:bin/mongod -shutdown -config ./data/mongodb.conf ### 2.elasticsearch elasticsearch目录下: 启动:bin/elasticsearch -d 检查:jps 关闭:先jps查pid,再然后 kill pid ### 3.redis redis目录下: 启动:redis-server ./redis.conf 连接:redis-cli 关闭:redis-cli shutdown
### 4.后端 tomcat目录下: 启动:bin/startup.sh 查看控制台输出:tail -f logs/catalina.out 关闭:bin/shutdown.sh
### 5.zookeeper zookeeper目录下: 启动:bin/zkServer.sh start 检查:bin/zkServer.sh status 关闭:bin/zkServer.sh stop ### 6.kafka kafka目录下: 启动kafka之前需要启动zookeeper服务 启动:bin/kafka-server-start.sh -daemon ./config/server.properties 首次启动需要创建两个Topic(recommender和log): bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic recommender bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic log 查看Topic: bin/kafka-topics.sh --zookeeper localhost:2181 --list 检查: 1.启动一个console生产者: bin/kafka-console-producer.sh --broker-list localhost:9092 --topic recommender 2.启动一个console消费者: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic recommender 关闭:bin/kafka-server-stop.sh
**离线统计和离线推荐代码的自动运行** ### 7.spark spark目录下: 启动:sbin/start-all.sh ### 8.azkaban (定时运行一次代码,访问http://localhost:8083/进行设置) azkaban-solo-server目录下: 启动:bin/start-solo.sh (账号密码都是azkaban) 关闭:bin/shutdown-solo.sh
**实时推荐代码的自动运行** ### 9.flume flume目录下: 启动:bin/flume-ng agent -c ./conf/ -f ./conf/log-kafka.properties -n agent 检查:ps -ef | grep flume kafkastream目录下: java -cp kafkastream.jar org.example.kafkastream.Application localhost:9092 localhost:2181 log recommender & 检查:ps -ef | grep kafkastream streaming目录下: /home/admin/cluster/spark/bin/spark-submit --class org.example.streaming.StreamingRecommender /home/admin/cluster/streaming/streamingrecommender.jar & 检查:ps -ef | grep streamingrecommender.jar # 环境搭建 ## 虚拟机搭建 ### 下载VM VirtualBox ### 新建虚拟机 推荐虚拟机CPU > 4core,内存 > 4GB(尽可能大) 推荐centOS 6.9(7也可以,要提高一下虚拟机的配置) ![](./READMEimg/1.jpg) ![](./READMEimg/2.jpg) 系统安装参考过程去看视频吧 https://www.bilibili.com/video/BV19W4y1w7cM/?p=9 iso镜像文件下载地址 阿里镜像源网站: https://mirrors.aliyun.com 清华大学镜像源网站: https://mirrors.tuna.tsinghua.edu.cn/ ## 工具环境搭建 用FinalShell远程连接虚拟机: [解决VirtualBox找不到Host-Only适配器-百度经验 (baidu.com)](https://jingyan.baidu.com/article/60ccbceb62912225cbb1975e.html) https://www.bilibili.com/video/BV1tb4y1H7Si ### 配置视频教程 接下来看视频结合教案 https://www.bilibili.com/video/BV1oa411H785/?p=2 ## 疑问(踩坑) ### 1.jps找不到命令 [(centos7)jps 找不到命令_51CTO博客_centos7 ifconfig命令找不到](https://blog.51cto.com/u_13415677/3727499) ![](./READMEimg/3.png) ### 2.无法访问虚拟机中的elasticsearch 关闭防火墙 ``` sudo firewall-cmd --state sudo systemctl stop firewalld.service ``` [浏览器访问虚拟机中的ElasticSearch_虚拟机配置elasticsearch访问地址-CSDN博客](https://blog.csdn.net/xi9972/article/details/103980854) ![](./READMEimg/4.jpg) 改yml里面的配置 [宿主机无法访问虚拟机中 ElasticSearch服务_windows无法访问虚拟机的elasticsearch-CSDN博客](https://blog.csdn.net/star1210644725/article/details/103903993) ![](./READMEimg/5.png) 加个转发规则 ![](./READMEimg/11.jpg) ### 3.教案下载spark的地址用不了 ![](./READMEimg/6.png) 换一个镜像地址吧... `wget https://archive.apache.org/dist/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz --no-check-certificate` ![](./READMEimg/7.jpg) (spark同样需要关闭防火墙才能被宿主机访问) ### 4.安装azkaban运行./gradlew clean build报错 ![](./READMEimg/8.jpg) 对网络要求极高(也可能他那边服务器差),换个网多试几次吧...校园网不行就手机热点 命令改成: ``` sudo ./gradlew clean sudo ./gradlew build installDist -x test ``` 如果还不行就试试下面配一下node环境 貌似还需要node环境...(视频未提及) [linux 安装nodejs 详细教程_linux安装nodejs-CSDN博客](https://blog.csdn.net/qq_42673067/article/details/130401204) [azkaban-4.0.0安装部署报错_azkaban could not resolve org.nodejs-CSDN博客](https://blog.csdn.net/liuandefeng/article/details/130983335) ### 5.无法访问虚拟机中的azkaban 改azkaban.properties里的内容 ``` default.timezone.id=Asia/Shanghai jetty.port=8083 ``` 去vbox加一个端口转发规则 ![](./READMEimg/9.jpg) 记得关掉防火墙,浏览器输入localhost:8083 chrome会提示“此网站无法提供安全连接”,然后打开不了,但是Edge就不会。。 ### 6.教案下载zookeeper的地址用不了 `wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz` [zookeeper 启动时一直报 :Starting zookeeper ... FAILED TO START的解决方案_[root@hadoop03 bin\]# sh zkserver.sh start /usr/bin-CSDN博客](https://blog.csdn.net/qq_48289488/article/details/124398177) ### 7.教案下载flume、kafka的地址用不了 `wget https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.11.0/apache-flume-1.11.0-bin.tar.gz` `wget https://archive.apache.org/dist/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz` ### 8.启动apache [Centos6和Centos7的服务启动等差别—在cenOS下安装apache出现-bash: /etc/init.d/httpd: 没有那个文件或目录_centos没有那个文件或目录-CSDN博客](https://blog.csdn.net/m0_56346550/article/details/127913269) 启动服务 systemctl start httpd 停止服务 systemctl stop httpd 重启服务(先停止,后启动) systemctl restart httpd 重新加载(使用新的配置文件) systemctl reload httpd 显示服务状态 systemctl status httpd (记得加端口转发给宿主机) ### 9.Tomcat 404问题 [异常SERVLET:org.eclipse.jetty.servlet.ServletHandler$Default404Servlet-25bbf683 - 涛声一笑 - ITeye博客](https://www.iteye.com/blog/lintaozhou-2521157) ### 10.不能访问mongodb 关闭防火墙,在/data/mongodb.conf里面加上: `bind_ip = 0.0.0.0` 为了不和windows本地的有冲突 改了端口转发 ![](./READMEimg/10.jpg) (记得用 bin.mongo 连接数据库) ### 11.数据加载模块一直报错 [None of the configured nodes are available: [{#transport#-1}{oSQMmpMTTHSkppahCmb8yA}{localhost}{127.0.0.1:9300}]] 修改一下配置elasticsearch.yml ![](./READMEimg/12.png) network.publish_host写自己虚拟机的ip 参考:[通过9200可访问ElasticSearch,9300访问失败问题_es 9300 请求不了-CSDN博客](https://blog.csdn.net/z327092292/article/details/91973824) ### 12.kafka联调不成功 报错 Exception in thread "main" org.apache.kafka.streams.errors.StreamsException: Could not find any available broker. 改配置: [kafka 9092端口不通 - 哎哟我去a - 博客园 (cnblogs.com)](https://www.cnblogs.com/hellohero55/p/14860605.html) ### 13.Redis拒绝连接 报错 Exception in task 0.0 in stage 5.0 (TID 5) redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect 加上新的端口转发 ![](./READMEimg/13.jpg) ### 14.运行flume报错 ``` Warning: JAVA_HOME is not set! Info: Including Hive libraries found via () for Hive access exec /usr/bin/java -Xmx20m -cp '/home/admin/cluster/flume/conf:/home/admin/cluster/flume/lib/*:/lib/*' -Djava.library.path= org.apache.flume.node.Application -f ./conf/log-kafka.properties -n agent ``` 原因是未配置JAVA_HOME环境变量,参考: [Centos7配置JAVA_HOME_centos7 export java_home-CSDN博客](https://blog.csdn.net/zzpzheng/article/details/73613838) ### 15.tomcat启动后zookeeper无法使用 因为zookeeper也需要使用8080端口,tomcat占用后就不能用了 要更改Tomcat的端口,你需要编辑Tomcat的配置文件`server.xml`。这个文件通常位于Tomcat安装目录的`conf`文件夹内。以下是具体步骤: 1. 打开`server.xml`文件。 2. 在文件中找到以下部分: ```xml ``` 3. 将`port="8080"`中的`8080`更改为你想要的端口号,我改为了`8088`: ```xml ``` 4. 保存并关闭`server.xml`文件。 5. 重启Tomcat服务器使更改生效。 ## 一些启动的命令 关闭防火墙 ``` sudo firewall-cmd --state sudo systemctl stop firewalld.service ```
### 1.mongodb mongodb目录下 启动:bin/mongod -config ./data/mongodb.conf 连接:bin/mongo 关闭:bin/mongod -shutdown -config ./data/mongodb.conf
### 2.elasticsearch elasticsearch目录下: 启动:bin/elasticsearch -d 检查:jps 关闭:先jps查pid,再然后 kill pid
### 3.redis redis目录下: 启动:redis-server ./redis.conf 连接:redis-cli 关闭:redis-cli shutdown
### 4.zookeeper zookeeper目录下: 启动:bin/zkServer.sh start 检查:bin/zkServer.sh status 关闭:bin/zkServer.sh stop ### 5.kafka kafka目录下: 启动kafka之前需要启动zookeeper服务 启动:bin/kafka-server-start.sh -daemon ./config/server.properties 创建两个Topic(recommender和log): bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic recommender 查看Topic: bin/kafka-topics.sh --zookeeper localhost:2181 --list 检查: ​ 1.启动一个console生产者: bin/kafka-console-producer.sh --broker-list localhost:9092 --topic recommender ​ 2.启动一个console消费者: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic recommender 关闭:bin/kafka-server-stop.sh
### 6.apache服务器 启动:systemctl start httpd 检查:systemctl status httpd 停止:systemctl stop httpd 将打包好的前端项目(website-release.tar.gz)部署到apache服务器中具体是将文件夹中有index.html文件的传出到/var/www/html/目录下即可 cd /var/www/html/ sudo mv ~/website-release.tar.gz ./ sudo tar -xf website-release.tar.gz sudo mv website/website/browser/* ./ 部署打包好的后端项目(BusinessServer.war), 放到 tomcat 的 webapp 目录下(/home/admin/tomcat/webapps/ROOT),需要先把原本ROOT里面的东西清空将BusinessServer里面的东西(包含index.jsp)替换进去 ### 7.tomcat tomcat目录下: 启动:bin/startup.sh 浏览器localhost:8080检查 关闭:bin/shutdown.sh
### 8.flume flume目录下: 启动:bin/flume-ng agent -c ./conf/ -f ./conf/log-kafka.properties -n agent 检查:ps -ef | grep flume kafkastream目录下: java -cp kafkastream.jar org.example.kafkastream.Application localhost:9092 localhost:2181 log recommender & 检查:ps -ef | grep kafkastream streaming目录下 /home/admin/cluster/spark/bin/spark-submit --class org.example.streaming.StreamingRecommender /home/admin/cluster/streaming/streamingrecommender.jar & 检查:ps -ef | grep streamingrecommender.jar
### 9.spark spark目录下: 启动:sbin/start-all.sh ### 10.azkaban (一分钟运行一次代码) azkaban-solo-server目录下: 启动:bin/start-solo.sh (账号密码都是azkaban) 关闭:bin/shutdown-solo.sh