1 背景介绍
1.1 行业背景
在2014年以后,大数据领域内掀起了一股强劲的Apache Spark学习和应用的浪潮。 Apache Spark以内存计算为核心,以其通用,快速和完整的生态圈等特点,正在逐步取代速度较慢的hadoop,越来越多的应用在了企业中。 ADHOC SQL查询,流计算,数据挖掘 ,图计算,R语言,一个又一个功能强大的组件使得越来越多的spark爱好者和企业界意识到 ,只要掌握一门spark技术,就能够为大多数的企业遇到的大数据的应用场景提供明显的加速。 学习Spark,成为一名合格的Spark工程师,使得每个致力于大数据行业的人,不仅能得到技术上的提升,也为个人的薪资带来了巨大的提升空间。
1.2 应用背景
随着互联网和大数据技术的发展,以“猜你喜欢”等为代表的推荐系统的应用场景逐渐普及到各个大型的网站中。从购物到旅游,从餐饮外卖到新闻资讯,几乎随处可见推荐系统的身影。 在这个项目中,我们将一起走进推荐系统的世界,看一看如何自己动手开发一套电影推荐系 统。
1.3 项目和技术背景
本项目是一个基于Apache Spark的电影推荐系统。
系统为用户推荐出最合适的5部电影。
整个系统运用了Spark,Hadoop,Hive,Kafka等常用的大数据组件,分为离线推荐
和实时推荐
2个主要的技术路线。
2 项目架构
- 存储层 HDFS作为底层存储,Hive做为数据仓库
- 离线数据处理 SparkSQL
- 实时数据处理 kafka, SparkStreaming
- 数据应用层 MLlib
- 数据展示和对接 ZEPPELIN
系统架构
3 主要模块
在我们的项目中,主要有以下的模块 存储模块:搭建和配置HDFS分布式文件存储系统,并且把Hbase和MYSQL做为备用的存储数据库 ETL模块:加载原始数据,清洗,加工,为模型训练模块和推荐模块准备所需要的各种数据。 模型训练模块:负责产生模型,以及寻找最佳的模型 推荐模块:包含离线推荐和实时推荐,离线推荐负责把推荐结果存储到存储模块中。实时推荐则负责产 生实时消息队列,并且消费实时消息产生推荐结果,最后存储到存储模块中。 数据展示模块:负责展示项目中所用的数据
4 系统开发重难点
在我们的项目中,主要有以下的开发的重难点 1.数据仓库的准备 2.数据的处理 3.实时数据流