基于Spark 的聚类算法探讨

2020-01-10 02:21纪兆华王立东宋海英张小华
科学技术创新 2020年19期
关键词:数据量内存分布式

纪兆华 王立东 宋海英 张小华

( 1、北京信息职业技术学院,北京100018 2、共青团内蒙古兴安盟委员会,内蒙古 乌兰浩特137400 3、兴安职业技术学院,内蒙古 乌兰浩特137400)

随着信息技术深度的不断发展, 积累的数据量产生了TB、PB、EB 级数据量。 传统计算机的软硬件不能够支持足够庞大的数据量的存储、管理及数据分析能力,因此,针对大数据的分布式处理技术随之产生, 主流的大数据处理平台有Hdoop 和Spark。传统的以Hdoop 为代表的数据处理技术不能满足当前应用实时性以及迭代运算需求,Spark 作为基于内存计算大数据处理平台以其高速、多场景适用的特点成为大数据平台的后起之秀,Spark 中 的Spark SQL、Spark Streaming、MLlib 和graphX 被广泛的应用在各领域,有望成为未来大数据分析的主流平台。

1 Spark 的功能及体系结构

Spark 主要提供基于内存计算的开源, 能快速进行数据分析,具有通用性,是可扩展的分布式计算引擎。Spark 支持数据查询、机器学习等业务场景,业务场景能无缝交叉融合,在不同应用中使用,可以快速的构建高性能大数据分析[1]。

Spark 的体系结构不同于Hadoop 的MapReduce 和HDFS,主要可分为三部分:Spark Core, 如: 弹性分布式数据集( RDD,resilient distributed datasets)、 上下文( Spark Context) 等实现Spark 系统中的计算、IO、 调度和shuffle 等系统基本功能;Spark Core 的上层建立的应用框架,如:Spark SQL 查询子项目、支持机器学习的MLlib 库、GraphX 图计算以及支持流计算的Spark Streaming 等四大框架;其他实验性项目,如:Tachyon、BlinkDB 和Tungsten 等,这些项目共同组成Spark 体系结构[2]。

Spark 用弹性分布式数据集进行数据抽象,可在内存中存储数据,将中间处理数据全部放到了内存中,减少磁盘IO 达到性能的提升,大幅度的降低了运行时间[3]。

2 Spark 的特点

Spark 与其他大数据平台不同的特点,主要如下:

2.1 处理速度快。 Spark 进行数据分析的速度快,弹性分布式数据集将执行的多个查询工作集缓存到内存中,后面的数据查询可以再次重用内存中的工作集,提高了查询速度。

2.2 支持语言多。 Spark 支持的开发语言环境多, 如Java、Scala、Python 及R 等进行工作,应用范围得到普及,允许在shell中进行交互式查询,多种使用模式的特点让应用更灵活。

2.3 支持复杂查询。Spark 支持map 和reduce 操作,以及SQL查询、流式查询等复杂查询,它们都基于RDD 这一抽象数据集在不同业务过程中进行转换,转换代价小,统一引擎解决不同类型工作场景。可在同一个工作流中无缝的搭配复杂查询功能。

2.4 实施流处理。Spark 还支持实时流计算( Spark Streaming)用来对数据进行实时处理,允许用户快速开发流应用程序,容错能力强,集成性好,为流处理和批处理重用了同样的代码,可将流数据保存到历史数据中

2.5 运行模式多。 Spark 可使用standalone 模式独立的运行,也能在当下的YARN 管理集群中运行,还可以读取已有的任何Hadoop 数据,在HBase、HDFS 等任何Hadoop 数据源上运行,并能让用户在已有Hadoop 应用迁移[4]。

3 基于Spark 的聚类算法

3.1 聚类算法

聚类算法把具有相同或者相似特征的无标签的数据对象划分为同一簇,同一簇的数据对象在在特征上尽可能相近或者相似,不同簇的数据对象尽可能不同或者相异,并且每个数据对象要保证只能划分在同一簇。 同一簇的中心点向量的个数和位置以及相似性度量的选取为聚类算法的重点内容, 并通过聚类算法多次迭代执行找到最优的聚类结果。 聚类算法被分为如下几类, 基于划分方法有K-means 聚类算法、K-medoids 聚类算法等;基于层次方法有Agnes、Diana 等;根据密度方法有高斯混合(Gaussian mixture)等。 在聚类算法执行过程中,能否分析识别出来整体数据对象分布的稠密和稀疏区域,能否发现哪些是存在的孤立点或者鼓励簇[5]。

3.2 常用的聚类算法K-mean

K-means 是最常用的聚类算法,从算法的执行过程来看,在每个类组中选取新的聚类中心点,通常使用欧式距离的多次迭代,达到最优解。 聚类的步骤通常包括如下几个步骤:a.选择需要进行聚类分析的数据;b.计算分析数据对象之间的相似度,对分析的结果做量化处理,在相似矩阵中存储;c.采用聚类算法做聚类分析;d.把分析结果显示出来。 首先选取要分析的数据空间的k 个数据对象作为中心点,每个数据对象代表一个聚类中心[6]。

3.3 支持机器学习的MLlib 库

MLlib 是Spark 生态系统在机器学习领域的重要应用,是Spark 里的机器学习库,提供了很多常用机器学习算法的分布式实现,如聚类、分类、回归等。Spark MLlib 库中的K-means 算法,使用map 分布式读取数据集,数据集读取后,cache 进内存里。计算时, 选取用map 键值对表示随机挑选出来的k 个聚类中心,Spark 的驱动器节点负责把数据发送到各个工作节点, 实现具体的计算任务。Spark MLlib 扩展性强、运行速度快,充分利用RDD 的迭代优势,能对大规模数据应用机器学习模型,并能与Spark Streaming、Spark SQL 进行协作开发应用, 让机器学习算法在基于大数据的预测、推荐和模式识别等方面应用更广泛[7]。

使用Spark MLlib 做机器学习很简单,首先对原始数据进行数据处理, 然后直接调用相应的API 实现分析数据。Spark MLlib 不同于传统的机器学习工具,Spark MLlib 提供了简单易用的API, 特别是Spark 能够高效的处理 大数据,并且在迭代计算时具有较强的优势。 因此,需要熟悉MLlib 的API就可以开始数据分析工作

结束语

Spark 是一个开源分析处理大数据平台,基于Spark 的聚类算法在图像分析、Web 文本分类、生物科学、客户分群、市场营销、 欺诈检测以及信息安全与管理等领域有着广泛的应用,为应对现实环境中复杂的场景,与不同的框架结合使用,发挥了更好的性能。 Spark 能快速处理多种场景下的大数据问题,高效挖掘大数据中的价值,为业务发展提供决策支持。

猜你喜欢
数据量内存分布式
基于RTDS的分布式光伏并网建模研究
基于大数据量的初至层析成像算法优化
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
基于预处理MUSIC算法的分布式阵列DOA估计
基于DDS的分布式三维协同仿真研究
内存搭配DDR4、DDR3L还是DDR3?
家庭分布式储能的发展前景