Spark大数据分析框架的核心部件包含RDD内存数据结构、Streaming流计算框架、GraphX图计算与网状数据挖掘、MLlib机器学习支持框架、Spark SQL数据检索语言、Tachyon文件系统、SparkR计算引擎等主要部件。这里科多大数据做一个简单的介绍。
一、RDD内存数据结构
大数据分析系统一般包括数据获取、数据清洗、数据处理、数据分析、报表输出等子系统。Spark为了方便数据处理、提升性能,专门引入了RDD数据内存结构,这一点与R的机制非常类似。用户程序只需要访问RDD的结构,与存储系统的数据调度、交换都由提供者驱动去实现。RDD可以与Haoop的HBase、HDFS等交互,用作数据存储系统,当然也可以通过扩展支持很多其它的数据存储系统。
因为有了RDD,应用模型就与物理存储分离开来,而且能够更容易地处理大量数据记录遍历搜索的情况,这一点非常重要。因为hadoop的结构主要适用于顺序处理,要翻回去反复检索数据的话效率就非常低下,而且缺乏一个统一的实现框架,由算法开发者自己去想办法实现。毫无疑问,这具有相当大的难度。RDD的出现,使这一问题得到了一定程度的解决。但正因为RDD是核心部件、实现难度大,这一块的性能、容量、稳定性直接决定着其它算法的实现程度。从目前看,还是经常会出现RDD占用的内存过载出问题的情况。
二、Streaming流计算框架
流是现在推特、微博、微信、图片服务以及物联网、位置服务等等的重要数据形态,因此流计算正显得前所未有的重要。流计算框架是所有互联网服务商的核心基础架构,Amazon、Microsoft都已经推出了Event消息总线云服务平台,而facebook\twitter等更是将自己的流计算框架开源。
Spark Streaming专门设计用于处理流式数据。通过Spark Streaming,可以快速地将数据推入处理环节,犹如流水线一样进行快速的加工,并在最短的时间反馈给使用。
三、GraphX图计算与网状数据挖掘
物理网络的拓扑结构,社交网络的连接关系,传统数据库的E-R关系,都是典型的图(Graph)数据模型。Hadoop主要适用于“数据量”很大的场合,对于关系的处理几乎没有支持,Hbase也是非常弱的关系处理能力。图数据结构往往需要快速多次对数据进行扫描式遍历,RDD的引入使Spark可以更高效地处理基于图的数据结构,从而使存储和处理大规模的图网络成为可能。类似的专用于图的系统还有neo4j等。
GraphX相对于传统数据库的关系连接,可以处理更大规模、更深度的拓扑关系,可以在多个集群节点上进行运算,确实是现代数据关系研究的利器。
四、MLlib机器学习支持框架
通过把机器学习的算法移植到Spark架构上,一方面可以利用底层的大规模存储和RDD的数据快速访问能力,还可以利用图数据结构和集群计算的处理能力,使机器学习的运算可以在大规模的集群系统上展开,即大力拓展了机器学习算法的应用能力。
五、Spark SQL数据检索语言
这个跟基于Hive的实现有些类似,但是基于RDD理论上能提供更好的性能,同时能更方便处理如join和关系检索等操作。这个被设计为与用户交互的一个标准化入口。
六、Tachyon文件系统
Tachyon是一个类似于HDFS的实现,不过感觉上更加接近于使用者,而HDFS主要是面向存储块的。
七、SparkR计算引擎
将R语言的能力应用到Spark基础计算架构上,为其提供算法引擎。