1、开发环境
IntelliJ IDEA + maven + git + linux
2、软件架构
hadoop + zookeeper + flume + kafka + nginx + spark + hive + mysql
3、项目描述
通过在电影网站系统埋点,获取到用户的点击事件(如用户喜欢哪部电影或对某部电影的评分)并将信息传至推荐系统,推荐系统根据该信息做出相应的处理,将推荐结果存入到mysql数据库中,web前端通过查询数据库将推荐的电影展示给用户。推荐流程如下:
4、项目架构
5、具体步骤
-
服务器规划(Linux centos7)
NO 机器名称 IP 配置 用途 1 master 10.2.47.1 16C/32G/500G master,cm,mysqldb 2 slave1 10.2.47.2 16C/32G/500G slave 3 slave2 10.2.47.3 16C/32G/500G slave 4 slave3 10.2.47.4 16C/32G/500G slave 5 slave4 10.2.47.5 16C/32G/500G slave -
电影数据集,地址,本次下载1m大小数据集
-
环境搭建,参照cloudera manager
-
数据的清洗:(上传数据到hdfs)
-
代码(com.zxl.datacleaner.ETL)打包上传
-
运行代码spark2-submit --class com.lianyun.zxl.datacleanner.ETL behavior-analyze-recommdend-1.0-SNAPSHOT.jar
-
成功将数据存于hive中
-
-
数据的加工,根据ALS算法对数据建立模型
-
代码(com.zxl.datacleaner.RatingData)打包上传,测试建立模型
-
运行代码spark2-submit --class com.lianyun.zxl.datacleanner.RatingData behavior-analyze-recommdend-1.0-SNAPSHOT.jar
-
成功将数据存于hive中
-
-
建立模型,根据RMSE(均方误差)选取较好的模型
-
代码(com.zxl.ml.ModelTraining)打包上传,建立模型
-
运行代码spark2-submit --class com.lianyun.zxl.ml.ModelTraining --total-executor-cores 2 --executor-memory 2g ----driver-java-options "-Xss10m" behavior-analyze-recommdend-1.0-SNAPSHOT.jar
-
成功将模型保存到hdfs上
-
-
产生推荐结果
-
代码(com.zxl.ml.Recommender)打包上传,产生推荐结果
-
运行代码 spark2-submit --class com.lianyun.zxl.ml.Recommender behavior-analyze-recommdend-1.0-SNAPSHOT.jar
-
-
推荐结果存入数据库,为所有用户推荐的结果,mysql中存入的格式是(userid,movieid,rating)
-
创建mysql数据库 create database recommend;
-
创建表alsTable create table alsTable(userid int,movieid int ,rating double);
-
代码(com.zxl.ml.RecommendForAllUsers)打包上传,数据入库
-
运行代码spark2-submit --class com.lianyun.zxl.ml.RecommendForAllUsers behavior-analyze-recommdend-1.0-SNAPSHOT.jar
-