首页 理论教育 Spark平台的整体架构与应用

Spark平台的整体架构与应用

时间:2023-10-17 理论教育 版权反馈
【摘要】:基于Spark平台、以及GraphX和Spark Streaming论文整体架构如图4-10所示:图4-10机器学习平台总体架构在上图中,底层Spark平台为基础设施层,在上层设计和实现的机器学习算法在框架层,其中部分算法依赖于GraphX和Spark Streaming框架,再在框架层之上的是服务接口层,主要封装各个算法的操作调用接口,以Web Service的接口方式暴露给外部应用,供外部发送请求。图4-11Spark的总体结构图Spark SQL是在Spark平台上处理结构化数据的工具。Spark通过维护“血统”,即数据衍生过程,重建RDD的信息。

Spark平台的整体架构与应用

基于Spark平台、以及GraphX和Spark Streaming论文整体架构如图4-10所示:

图4-10 机器学习平台总体架构

在上图中,底层Spark平台为基础设施层,在上层设计和实现的机器学习算法框架层,其中部分算法(如图挖掘、在线学习算法)依赖于GraphX和Spark Streaming框架,再在框架层之上的是服务接口层,主要封装各个算法的操作调用接口,以Web Service的接口方式暴露给外部应用,供外部发送请求。

Spark是一种新型的分布式计算框架,采用Scala语言构建,为分布式计算中在并行操作之间重用数据集的工作负载类型设计。例如,数据挖掘和机器学习算法。为了优化这些类型的工作负载,Spark引入了内存计算的概念,通过在集群中将数据集缓存在内存中,支持数据集的共享和重用,缩短数据集的访问时间。为了实现数据集的重用,Spark设计了一种弹性分布式数据集RDD(Resilient Distributed Dataset)。RDD是分布在集群中的只读对象集合,在集群中的多个结点上进行分区,可以在多个计算中共享,它不仅支持基于数据集的应用,还具有容错、局部计算调度和可扩展等特性。具体而言,RDD是一个Scala对象,可以通过读取HDFS(Hadoop Distributed File System)或者本地文件系统中的数据进行创建,也可以从程序中的集合对象进行创建。RDD支持用户在执行计算时选择缓存数据集在内存中,便于下次计算时重用数据集,提供了更快速的数据访问,减少了不必要的磁盘重复读写操作。目前,RDD的缓存粒度比较粗,只能被全部缓存。当集群中没有足够的内存时,Spark会根据LRU(Least Recently Used)算法对缓存的RDD进行替换。

Spark是基于内存计算的迭代分布式计算框架,适用于需要多次操作特定数据集的应用场景。由于RDD具有只读的特性,Spark不适用于异步细粒度更新状态的应用场景,例如增量的爬虫和索引

为了提供一体化的大数据处理平台,Spark不仅向用户提供了类Map Reduce编程模型,还向用户提供了一组工具集,以支持不同应用场景下使用Spark进行大数据处理。Spark的总体结构图如图4-11所示,包括Spark SQL、Spark Streaming、MLlib和Graph X等子模块。

图4-11 Spark的总体结构图

Spark SQL是在Spark平台上处理结构化数据的工具。首先,Spark SQL简化了SQL查询与其他复杂数据分析算法的集成;其次,Spark SQL向用户提供了统一的数据源访问接口,包括Apache Hive表和JSON文件等;再次,Spark SQL完全兼容Hive,复用Hive的元数据,支持Hive的数据、查询语句和UDF等;最后,Spark SQL支持标准的JDBC和ODBC连接,便于集成其他数据分析工具。

Spark Streaming是Spark平台上的流式计算工具。首先,Spark Streaming使用Spark特有的API,编写流式计算程序的方式和普通的批处理程序一样,简化了流式计算的复杂度;其次,Spark Streaming提供自动化的容错处理;最后,Spark Streaming便于将流式计算和批处理任务与交互式查询进行结合。

MLlib是一个基于Spark运行时的分布式低层次的机器学习算法库,包含了一些常用的分类、回归、聚类、统计分析和协同过滤算法。MLlib的性能是Hadoop的100倍。MLlib自Spark 0.8版本开始发布,并且成为了Spark的一个子模块,用户使用十分方便。目前,MLlib正在开发和完善中。

Graph X是Spark平台上的图运算工具。Graph X基于Spark平台,用户可以无缝对接图运算和集合运算;Graph X的性能优于现有的其他图运算框架,例如Graph Lab和Giraph等。

相比于其他分布式计算框架,Spark的特性主要包括:(www.xing528.com)

1.高效

对于小数据集,Spark能够达到亚秒级的延迟;对于大数据集,例如典型的迭代式机器学习,Spark比基于Hadoop和Pregel的实现快十倍到百倍。

2.通用性

Spark提供了不局限于Map和Reduce的多种数据集操作,比如map、filter、flat Map、sample、group By Key、reduce By Key、union、join、cogroup、map Values、sort、partion By等多种操作类型。Spark为上层应用的开发人员提供了更多的方便。

3.容错性

Spark提供的RDD是弹性的。Spark通过维护“血统”,即数据衍生过程,重建RDD的信息。另外,在执行任务时,Spark支持通过checkpoint实现容错处理。

4.易用性

Spark提供了丰富的Scala、Java和Python访问接口以及交互式的Shell工具。

5.多运行模式

Spark既支持独立部署,也支持通过资源管理框架与其他分布式计算框架同时部署,运行模式包括本地模式、Standalone模式、Mesos模式和Yarn模式。

Spark集群存在两种元素,即驱动程序(Driver)和工作结点(Worker)。驱动程序是应用逻辑执行的起点,可以实现在单一结点上执行的操作或者在一组结点上并行执行的操作;多个工作结点对数据进行实际的并行计算。当用户向Spark提交一个应用程序时,Spark产生一个驱动程序。工作结点的进程会长期运行,将RDD数据集以对象的形式缓存在内存中。图4-12展示了Spark的运行时。驱动程序会启动多个工作Spark集群存在两种元素,即驱动程序(Driver)和工作结点(Worker)。驱动程序是应用逻辑执行的起点,可以实现在单一结点上执行的操作或者在一组结点上并行执行的操作;多个工作结点对数据进行实际的并行计算。当用户向Spark提交一个应用程序时,Spark产生一个驱动程序。工作结点的进程会长期运行,将RDD数据集以对象的形式缓存在内存中。图4-12展示了Spark的运行时。驱动程序会启动多个工作结点,工作结点会从HDFS或者本地文件系统中读取数据,并将计算后的RDD数据集缓存在本地内存中。通常,数据与工作结点搭配,并在集群中进行分区。在执行阶段,驱动程序将执行代码传递给工作结点,工作结点对相应分区的数据进行处理。数据经过计算的各个阶段,程序执行结束之后,工作结点将结果返回至驱动程序。

图4-12 Spark Runtime

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈