第一模块:开发环境和集群准备

1、项目总体介绍和背景a.基于Spark流行的大数据工具,开发一套电影推荐系统,让大家体验到如何实现自己的“猜你喜欢”的推荐。 很多电商和购物网站以及一些手机上的应用,猜你喜欢已经成为了必备功能,它对网站的销售有着很明显的刺激作用。

2、技术框架a.大数据工具的选择,包括HDFS、HIVE、SPARK、KAFKA、HBASE、PHOENIX、ZEPPELIN等工具。

b.推荐的实时性,包括实时推荐和离线推荐。

3、系统要求以及开发的重点和难点a. 完成一个推荐系统,为每个用户产生合适的电影产品的推荐结果。并且满足在性能,可靠性上的要求。

b. 实时数据的产生以及打到kafka消息队列中。

c. 对数据特征的发掘、清洗和加工。

d. 产生推荐系统的模型,并在多个模型中选择最佳的模型。

e. 解决整个系统中的性能问题。

4、集群准备a. 搭建hadoop、hive、spark、kafka、zookeeper、hbase、phoenix、ZEPPELIN集群

b. 安装MYSQL,配置Hive metastore。

5、开发环境准备a.在eclipse中构建项目,通过Maven来管理项目,并添加相关的依赖。

6、项目数据准备a. 下载数据

第二模块:数据特点分析、清洗、加工成表和数据集的准备

1、分析数据的特点a. 介绍各个文件的作用以及用户和电影的各个属性

b. 分析数据区间、特点

c. 探讨开发的思路

2、数据入HDFS,通过SPARKSQL整理成表a. 构建RDD

b. 定义各个表对应的case class

c. 将RDD转换成DATAFRAME

d. 在sparksql中创建对应的表

e. 通过sparksql做一些查询来验证

3、数据集的准备a. 字段剖析

b. 选择合适的字段将数据切分成测试集和验证集

第三模块:离线推荐模块的开发

1、数据加工,整理出ratinga. 通过一系列的数据转换形成rating数据

2、依据ratings构建模型a. 构建模型

3、理论补充a. ALS算法的介绍

4、最佳参数的寻找a. 评估模型好坏的指标RMSE

b. 模型相关的参数

c. 如何寻找最好的模型

5、离线推荐a. 依据输入的某个用户ID,加载模型,产生推荐的电影结果,写入到数据库中

b. 依据输入的某个电影,加载模型,给出可能喜欢的用户

第四模块:Kafka+spark Streaming实时推荐模块的开发

1、构建实时数据流a. 将ratings表里的数据通过模拟的方式打入到kafka的消息队列中。

2、在sparkstreaming中接收kafka消息队列中的数据,开发实时数据处理模块a. 在sparkstreaming通过direct的方式来接收kakfa中的数据,然后加载已经存在的模型,实时生成推荐结果,写入到数据库中。

3、新用户或者未登录用户a. 推荐策略的推想,以及实现用户的推荐。

第五模块:推荐系统的完善

1、系统稳定性的考虑a. 开发脚本来保证实时应用的持续运行。

2、数据的展示a. 通过Zeppelin来连接sparkSQL,提供一个方面快捷的数据探查的系统

3、探索其他的算法在推荐系统中可能的用处a. 其他算法的介绍和应用

第六模块:性能优化

1、内存的分配a. 思考和探讨各部分内存的优化思路

2、任务的调度a. 寻求合理的资源分配及任务调度,修改适当的配置来完善系统

3、其他方面的优化

第七模块:项目总结

1、项目总结a. 与大家一块探讨整个系统开发过程中的感受,对系统的理解,需求的理解,各个组件的理解。

2、技术探讨a. 与学生一起探讨整个系统还可以从哪些方向去做改进,如果做改进。架构,性能,推荐的准确性,实时性,系统稳定性,安全性。