基于Spark的实时推荐系统设计与实现
发布时间:2021-04-02 21:57
随着互联网的迅速发展,网络所承载的数据信息也在爆炸式增长。在面对这些海量信息时,人们往往很难找到自己想要的,感兴趣的内容,为了解决这个问题从而诞生了搜索引擎,那些目的很明确的用户可以根据关键字搜索来快速,准确的找到自己想要的内容。然而在实际的日常生活中,很多用户的需求是模糊的,潜在的,为了挖掘出这些用户的潜在兴趣从而又诞生了推荐系统。推荐系统是一种解决信息过载的工具,能够帮助用户发现自己可能感兴趣的信息,使用户寻找感兴趣内容所花费的时间大大减少,从而增加网站的用户黏性。决定推荐系统性能的关键是系统架构设计和推荐算法这两个方面。传统基于离线批计算平台Hadoop的推荐系统,虽然可以通过对海量数据的计算获得较为准确的推荐,但其计算时间较长,无法满足推荐的实时性需求,而目前基于Lambda架构构建的实时推荐系统,采用离线批处理层和在线实时层结合的策略,虽然具有计算准确以及高容错等优点,但也存在结果汇总困难,系统复杂,维护困难等问题,且推荐的结果依赖离线层,如果短时间用户行为发生较大变化则会发生离线层的结果滞后现象,导致推荐不能及时反映用户的兴趣变化。在推荐算法方面,目前常用的推荐算法如协同过...
【文章来源】:东南大学江苏省 211工程院校 985工程院校 教育部直属院校
【文章页数】:59 页
【学位级别】:硕士
【部分图文】:
Spark生态环境相比于Hadoop,Storm等大数据处理框架Spark具有如下特点:
的执行并创建SparkContext对象,SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等。Worker节点是运行作业任务的工作节点,它负责接收主节点命令与进行状态汇报,并创建Executor并行处理计算任务。在执行阶段,SparkContext会将任务和任务所依赖的file和jar序列化后传递给对应的Worker机器,同时Executor对相应数据分区的任务进行处理。Spark有三种集群部署模式,对应三种ClusterManager(集群资源管理器),分别是Standalone独立集群,Mesos和yarn,这使得Spark更加通用,能运行在各种集群模式之上。图2-2Spark运行架构图Spark的重要优势在于它为大数据分析提供了统一的解决方案。如图2-1所示,位于底层的是SparkCore,它实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针对弹性分布式数据集提供了丰富的操作。在SparkCore的基础上,Spark提供了一系列面向不同应用需求的组件,主要有用于结构化数据操作的SparkSQL、用于实时数据流计算的SparkStreaming、机器学习算法库MLlib以及面向图计算提供的算法库GraphX。这些用于不同场景的Spark组件都可以在同一个应用中无缝使用,无需进行复杂烦琐的学习、部署、维护和测试等一系列工作,用户只要搭建好Spark平台便可以直接使用这些组件,从而节省了大量的系统开发与运维成本。本文的推荐系统中主要用到的是流处理组件SparkStreaming以及机器学习算法库MLlib。SparkStreaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。SparkStreaming能够从不同的数据源获取数据,如Kafka,Flume或者TCPsockets等,并且能够用复杂的算法来对数据进行实时处理,处理后的结果能够被存储到文件,数据库等外部存储设备中。SparkStreaming支持与
东南大学硕士学位论文8图2-3SparkStreaming微批次数据流处理流程SparkStreaiming会将微批次数据流抽象化成了离散数据流DStream(discretizedstream),它是SparkSteaming的核心概念,它既可以代表连续不断的输入数据流,也可以代表数据处理之后的结果数据流。SparkStreaming在处理流数据时,会按照时间间隔,将数据流划分成一个个批次的数据集,即一个个DStream,每个DStream又由一系列的RDD组成,每个RDD都包含数据流中来自特定间隔的数据,任何对DStream的操作都会转变成对底层RDD的操作。这些操作都是由Spark引擎来完成,并且隐藏了大部分的实现细节,只对开发者提供简单易用的高层API,这使得使用SparkStreaming来构建流数据应用程序变得十分简单易用。SparkMLlIb是Spark所提供的的机器学习库,目的是使得在Spark中使用机器学习时更简单,更易于扩展。SparkMLlib目前已经包含了一些通用的学习算法和工具,如:分类、回归、聚类、协同过滤、降维以及底层的优化原语等算法和工具。机器学习算法一般都有很多个步骤迭代计算的过程,需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用Hadoop的MapReduce计算框架,每次计算都要读/写磁盘以及任务的启动等工作,这会导致非常大的I/O和CPU消耗。而Spark基于内存的计算模型则擅长迭代计算,多个步骤计算直接在内存中完成,只有在必要时才会操作磁盘和网络。在Spark官方首页中展示了LogisticRegression算法在Spark和Hadoop中运行的性能比较,在LogisticRegression的运算场景下,Spark比Hadoop快了100多倍。目前SparkMLlib还在处于不断的更新中,相信未来在Spark上构建机器学习应用会变得更加快速简洁2.2消息队列KafkaKafka是一个分布式消息队列系统[28],在架构设计中?
【参考文献】:
期刊论文
[1]基于Hadoop的旅游景点推荐的算法实现与应用[J]. 马腾腾,朱庆华,曹菡,沈超. 计算机技术与发展. 2016(03)
[2]Big data: the driver for innovation in databases[J]. Bin Cui,Hong Mei,Beng Chin Ooi. National Science Review. 2014(01)
[3]基于Hadoop的电子商务推荐系统的设计与实现[J]. 李文海,许舒人. 计算机工程与设计. 2014(01)
[4]大数据研究综述[J]. 陶雪娇,胡晓峰,刘洋. 系统仿真学报. 2013(S1)
[5]大数据研究[J]. 严霄凤,张德馨. 计算机技术与发展. 2013(04)
[6]基于Hadoop/Hive的web日志分析系统的设计[J]. 刘永增,张晓景,李先毅. 广西大学学报(自然科学版). 2011(S1)
[7]一种基于加权欧氏距离聚类方法的研究[J]. 孟海东,张玉英,宋飞燕. 计算机应用. 2006(S2)
[8]电子商务系统中的信息推荐方法研究[J]. 刘玮. 情报科学. 2006(02)
[9]基于余弦相似度的文本空间索引方法研究[J]. 张振亚,王进,程红梅,王煦法. 计算机科学. 2005(09)
[10]Internet个性化信息服务研究综述[J]. 李勇,徐振宁,张维明. 计算机工程与应用. 2002(19)
博士论文
[1]协同过滤系统的稀疏性与冷启动问题研究[D]. 孙小华.浙江大学 2005
本文编号:3116033
【文章来源】:东南大学江苏省 211工程院校 985工程院校 教育部直属院校
【文章页数】:59 页
【学位级别】:硕士
【部分图文】:
Spark生态环境相比于Hadoop,Storm等大数据处理框架Spark具有如下特点:
的执行并创建SparkContext对象,SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等。Worker节点是运行作业任务的工作节点,它负责接收主节点命令与进行状态汇报,并创建Executor并行处理计算任务。在执行阶段,SparkContext会将任务和任务所依赖的file和jar序列化后传递给对应的Worker机器,同时Executor对相应数据分区的任务进行处理。Spark有三种集群部署模式,对应三种ClusterManager(集群资源管理器),分别是Standalone独立集群,Mesos和yarn,这使得Spark更加通用,能运行在各种集群模式之上。图2-2Spark运行架构图Spark的重要优势在于它为大数据分析提供了统一的解决方案。如图2-1所示,位于底层的是SparkCore,它实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针对弹性分布式数据集提供了丰富的操作。在SparkCore的基础上,Spark提供了一系列面向不同应用需求的组件,主要有用于结构化数据操作的SparkSQL、用于实时数据流计算的SparkStreaming、机器学习算法库MLlib以及面向图计算提供的算法库GraphX。这些用于不同场景的Spark组件都可以在同一个应用中无缝使用,无需进行复杂烦琐的学习、部署、维护和测试等一系列工作,用户只要搭建好Spark平台便可以直接使用这些组件,从而节省了大量的系统开发与运维成本。本文的推荐系统中主要用到的是流处理组件SparkStreaming以及机器学习算法库MLlib。SparkStreaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。SparkStreaming能够从不同的数据源获取数据,如Kafka,Flume或者TCPsockets等,并且能够用复杂的算法来对数据进行实时处理,处理后的结果能够被存储到文件,数据库等外部存储设备中。SparkStreaming支持与
东南大学硕士学位论文8图2-3SparkStreaming微批次数据流处理流程SparkStreaiming会将微批次数据流抽象化成了离散数据流DStream(discretizedstream),它是SparkSteaming的核心概念,它既可以代表连续不断的输入数据流,也可以代表数据处理之后的结果数据流。SparkStreaming在处理流数据时,会按照时间间隔,将数据流划分成一个个批次的数据集,即一个个DStream,每个DStream又由一系列的RDD组成,每个RDD都包含数据流中来自特定间隔的数据,任何对DStream的操作都会转变成对底层RDD的操作。这些操作都是由Spark引擎来完成,并且隐藏了大部分的实现细节,只对开发者提供简单易用的高层API,这使得使用SparkStreaming来构建流数据应用程序变得十分简单易用。SparkMLlIb是Spark所提供的的机器学习库,目的是使得在Spark中使用机器学习时更简单,更易于扩展。SparkMLlib目前已经包含了一些通用的学习算法和工具,如:分类、回归、聚类、协同过滤、降维以及底层的优化原语等算法和工具。机器学习算法一般都有很多个步骤迭代计算的过程,需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用Hadoop的MapReduce计算框架,每次计算都要读/写磁盘以及任务的启动等工作,这会导致非常大的I/O和CPU消耗。而Spark基于内存的计算模型则擅长迭代计算,多个步骤计算直接在内存中完成,只有在必要时才会操作磁盘和网络。在Spark官方首页中展示了LogisticRegression算法在Spark和Hadoop中运行的性能比较,在LogisticRegression的运算场景下,Spark比Hadoop快了100多倍。目前SparkMLlib还在处于不断的更新中,相信未来在Spark上构建机器学习应用会变得更加快速简洁2.2消息队列KafkaKafka是一个分布式消息队列系统[28],在架构设计中?
【参考文献】:
期刊论文
[1]基于Hadoop的旅游景点推荐的算法实现与应用[J]. 马腾腾,朱庆华,曹菡,沈超. 计算机技术与发展. 2016(03)
[2]Big data: the driver for innovation in databases[J]. Bin Cui,Hong Mei,Beng Chin Ooi. National Science Review. 2014(01)
[3]基于Hadoop的电子商务推荐系统的设计与实现[J]. 李文海,许舒人. 计算机工程与设计. 2014(01)
[4]大数据研究综述[J]. 陶雪娇,胡晓峰,刘洋. 系统仿真学报. 2013(S1)
[5]大数据研究[J]. 严霄凤,张德馨. 计算机技术与发展. 2013(04)
[6]基于Hadoop/Hive的web日志分析系统的设计[J]. 刘永增,张晓景,李先毅. 广西大学学报(自然科学版). 2011(S1)
[7]一种基于加权欧氏距离聚类方法的研究[J]. 孟海东,张玉英,宋飞燕. 计算机应用. 2006(S2)
[8]电子商务系统中的信息推荐方法研究[J]. 刘玮. 情报科学. 2006(02)
[9]基于余弦相似度的文本空间索引方法研究[J]. 张振亚,王进,程红梅,王煦法. 计算机科学. 2005(09)
[10]Internet个性化信息服务研究综述[J]. 李勇,徐振宁,张维明. 计算机工程与应用. 2002(19)
博士论文
[1]协同过滤系统的稀疏性与冷启动问题研究[D]. 孙小华.浙江大学 2005
本文编号:3116033
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3116033.html