论文部分内容阅读
随着移动互联网与物联网的技术的飞速发展,人类收集的数据量呈指数级增加。分布式计算已经成为大数据处理、分析过程中不可或缺的关键技术。分布式计算通过将计算任务分解为可并发执行的多个子问题并在互连的多台计算节点上同时运行,解决了传统算法面临的单机性能瓶颈、难以扩展的问题。关于分布式机器学习算法的研究也成为了工业界和产业界的研究热点。在众多的分布式计算框架中,Spark以其高容错、高可扩展和易用的特点得到了广泛的应用。但对其上实现的分布式算法的复杂度分析和比较仍缺乏同一的分析框架。因此,对具体算法在Spark平台上的可伸缩性以及性能无法进行理论上的分析与对比,只能进行经验分析。本文基于对Spark分布式平台的研究,提出了一种对Spark上分布式算法的复杂度分析框架,并以基于Spark的协同过滤算法作为应用场景。证明了通过该框架能够有效的指导算法的开发与运行时环境配置。具体地,本文做了如下工作:首先,本文首先对分布式计算和协同过滤技术做了介绍。分布式计算部分对流行的Hadoop和Spark分布式计算平台的计算模型、运行模型、设计理念都给出了具体分析,并对其原理给出了解释。协同过滤部分中,对基于内存的协同过滤和基于矩阵分解的协同过滤技术进行了分析,介绍了多种经典算法。然后,本文提出了一种对Spark上分布式算法的复杂度分析框架,并在此基础上对多种基于Spark的分布式协同过滤算法做了复杂度分析和实验分析,包括基于内存的协同过滤算法的三种并行化方法和基于矩阵分解的三种并行化方法。最后,本文设计了一款基于Spark的数据挖掘工具箱。工具箱通过将数据挖掘算法组件化,提供基于配置的数据分析应用开发模型,解决了分析人员难以使用Spark的问题。通过使用该工具箱,用户可以方便的使用各种分布式数据挖掘算法处理海量数据而无需编程能力,本文详细介绍了工具箱的功能与开发设计过程。