论文部分内容阅读
现代互联网信息中含有极为丰富的商业价值,如何从这些海量数据中挖掘出有用的信息是一个重要的课题。而“信息爆炸”产生的海量数据在传统计算机上进行聚类分析处理需要耗费大量的时间,不能满足现今的商业需求,结合云计算平台的并行化改进能有效解决这一问题。由加州伯克利AMP实验室新开发的内存计算分布式框架Spark主要针对海量数据处理和机器学习。相较于传统并行计算框架,其内存计算的特性能很好的适应迭代计算,同时在数据切分、并行处理、容错健壮性方面进行了封装,能良好的适应于并行化计算开发。k-means算法是一种被广泛应用的聚类分析算法,一般采用误差平方和准则函数作为聚类准则,在处理数据集时效率较高且聚类效果良好。但面对海量数据规模时,计算海量数据对象间距离时遇到瓶颈,数据规模变大,迭代计算次数增加,计算耗时过长。同时算法本身存在k值不确定、初始聚类中心点随机性选取的问题,会影响聚类结果的准确性和算法效率。为了突破面对海量数据时的计算瓶颈,本文在Spark平台上实现k-means算法并行化。针对k-means算法的不足,本文使用canopy算法对k-means算法进行优化提高算法效率和聚类结果的准确性,并在Spark平台上实现canopy-kmeans算法的并行化。对基于Spark平台的k-means并行算法和canopy-kmeans并行算法在准确性、加速比、扩展性、与其他平台性能进行了比较。实验结果表明,算法并行化后得到较好的聚类结果,在面对海量数据时有较好的加速比和扩展性。与Hadoop平台比较,基于Spark平台算法并行化效率更高。而Spark平台执行需求资源不同的聚类任务时,在资源管理平台YARN调度任务相较于资源管理平台Mesos有更高的执行任务效率。研究表明,结合Spark+YARN平台实现并行化是可行高效且具有现实意义的。