基于Spark的KMeans算法的并行化实现

聚类分析算法集中的KMeans以快速简单、对大数据集有较高的效率和可伸缩性、时间复杂度近于线性、适合挖掘大规模数据集等优点而被广泛应用,但该算法也有其特定的性能瓶颈。

  1. KMeans算法初始化过程中预先设定的K值很难估计,大多数全凭经验决定,具有主观性
  2. 算法开始前随机选定的初始类簇中心也会在很大程度上影响聚类的结果

传统的数据挖掘模型及其优化算法大多在单机上进行串行运算,当面对如此复杂多样的大规模数据集和多维数据类型时,由于单机的计算资源有限而造成挖掘算法不能快速准确地完成数据挖掘任务

hadoop适合处理离线批处理文件,对于迭代运算和实时处理表现很差。

KMeans算法简单高效,适合数据量大、特征维度搞的数据集,而且它对数据的依赖度较低

采用支持向量机、遗传算法来确定最佳K值

Spark提出的RDD(Resilient Distributed Datasets)是一种弹性分布式数据集,应用程序可以将中间计算结果暂存到内存中,方便下一次迭代计算,节省不必要的IO,还可以实现数据集的重用,进而可以优化迭代计算的负载。

RDD的核心思想:它将数据集缓存在内存中,并用Lineage机制来进行容错
功能特性:具有智能容错机制、位置感知调度和可伸缩性
Spark会把迭代计算所需要的初始数据定义为RDD并以分区的形式加载到集群中所有计算节点的内存分区中,接着由计算节点里的人物集对本地内存执行迭代计算。当计算节点的内存远远大于待处理的数据集时,迭代计算过程中应用程序基本无需和磁盘数据进行数据IO

分布式计算环境下KMeans算法并行化研究

你可能感兴趣的:(分布式,spark)