论文部分内容阅读
近年来,互联网以及计算机相关技术的飞速发展,包括照相技术、视频技术、电子商务等等,使得我们周围产生的数据呈爆发性增长,尤其在以智能手机为代表的移动互联网技术兴起之后更为明显。面对如此大规模的数据,数据的分析与处理成为巨大的难题,这便给了数据挖掘发展的机会。数据挖掘能够从这些海量的、异构的、随机的数据中提取对用户有价值的信息,发现用户感兴趣的模式。传统数据挖掘技术在处理海量数据时往往耗时过长,云计算的出现为数据挖掘带来了解决这个问题的途径。云计算物理上往往建立在大型的集群或者大规模数据中心之上,通过规模化的优势,云计算能够提供强大而廉价的计算能力,廉价的存储网络。而且,公有云更使得大量用户能够同时按需获取自己所需的计算资源。本文介绍云计算与数据挖掘相关的概念与特点,并着重介绍了开源云计算框架Hadoop。Hadoop是一个开源的搭建云平台的分布式计算框架。我们可以使用Hadoop轻松的搭建自己的集群而不需要了解复杂的底层通信机制。Hadoop有很多组件组成,其中最重要的两个部分是:分布式文件系统HDFS和MapReduce计算模型。HDFS可以提供一个安全可靠的文件系统,MapReduce则以消息通信模型为基础为用户提供了一个简单易用而不失高效的编程模型。MapReduce模型将任务分配给集群中的多个主机,并由主节点监控管理。为了将现有数据挖掘算法在Hadoop集群上完美运行,真正利用集群并行化的优势提高运行效率,需要针对这些算法进行改造,将它们以MapReduce编程模型重新实现。本文以协同过滤算法为例,将提出一种在Hadoop集群上运行的可扩展的基于项的协同过滤算法。利用Hadoop与MapReduce的特性,将计算量大的任务划分,使其并行运行在不同的结点上。将协同过滤只能串行的部分分阶段,并在这些阶段内部以MapReduce模型实现,因为并行化要求map任务处理的数据各记录的处理与其它无关。其中最主要的是将计算量最大的两个项的相似值的计算实现并行化。在map阶段提取两个项的评分,在reduce阶段求两个项的相似值,这两个阶段都是并行化的,这样算法的整体效率有了很大提高。类似地,对K均值算法,关键则是将求项与质心的距离并行。最后通过实验和分析,证明了Hadoop框架下的协同过滤与串行实现相比效率有了很大提高。通过以上研究,我们了解了云计算环境下数据挖掘算法相比与单机环境下数据挖掘算法的优势和不足。论文主要研究了怎样将传统数据挖掘算法改造,以利用开源分布式框架Hadoop自身的特点,实现并行化,提高效率。