理论教育 Spark计算框架及其生态系统解析

Spark计算框架及其生态系统解析

时间:2023-06-15 理论教育 版权反馈
【摘要】:Spark是一个正在快速成长的开源集群计算系统,其生态系统中的软件包和框架日益丰富,使得spark能够进行高级数据分析。2)Spark生态系统BDASBDAS是伯克利数据分析栈的英文缩写,AMP实验室提出,涵盖四个官方子模块,即Spark SQL.Spark Streaming,机器学习库MLlib和图计算库Graphx等子项目,这些子项目在Spark上层提供了更高层更丰富的计算范式。可见Spark专注于数据的计算,而数据的存储在生产环境中往往还是有Hadoop分布式文件系统HDFS承担。

Spark计算框架及其生态系统解析

Spark发源于美国加州大学伯克利分校的AMP实验室,现今,Spaark已发展成为Apache软件基金会旗下的著名开源项目。Spark是一个基于内存计算的大数据并行计算框架,从多碟带的批量处理出发,包含数据库流处理和图运算等多种计算方式,提高了大数据环境下的数据处理实时性,同时保证高容错性和可伸缩性。Spark是一个正在快速成长的开源集群计算系统,其生态系统中的软件包和框架日益丰富,使得spark能够进行高级数据分析。

1)Spark的优势

(1)快速处理能力,随着实施大数据的应用,要求越来越多,Hadoop MapReduce将中间输出结果存储在HDMS,但读写HDMS造成磁盘I/O频繁的方式,已不能满足这类需求。而Spark将执行工作流程抽象为通用的有向无环图(DAG)执行计划,可以将多任务并行或者串联执行,将中间结果存储在内存中,无需输出到HDFS中,避免了大量的磁盘I/O。即便是内存不足,需要磁盘I/O,其速度也是Hadoop的10倍以上。

(2)易于使用,spark支持java、Scala、Python和R等语言,允许在Scala、Python和R中进行交互式的查询,大大降低了开发门槛。此外,为了适应程序员业务逻辑代码调用SQL模式围绕数据库加应用的架构工作方式大可支持SQL及Hive SQL对数据进行查询。

(3)支持流式运算,与MapReduce只能处理离线数据相比,spark还支持实时的流运算,可以实现高存储量的具备容错机制的实时流数据的处理,从数据源获取数据之后,可以使用诸如Map、Reduce和Join的高级函数进行复杂算法的处理,可以将处理结果存储到文件系统数据库中,或者作为数据源输出到下一个处理节点。

(4)丰富的数据源支持,Spark除了可以运行在当下的级YARN群管理之外,还可以读取Hive、HBase、HDFS以及几乎所有的Hadoop的数据,这个特性让用户可以轻易迁移已有的持久化层数据。

2)Spark生态系统BDAS(www.daowen.com)

BDAS是伯克利数据分析栈的英文缩写,AMP实验室提出,涵盖四个官方子模块,即Spark SQL.Spark Streaming,机器学习库MLlib和图计算库Graphx等子项目,这些子项目在Spark上层提供了更高层更丰富的计算范式。可见Spark专注于数据的计算,而数据的存储在生产环境中往往还是有Hadoop分布式文件系统HDFS承担。

(1)Spark。Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子Map函数和Reduce函数及计算模型,还提供更为丰富的数据操作,如Filter、Join/goodByKey、reduceByKey等。Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、远程过程调用(RPC)、序列化和压缩等功能,并为运行在其上的单层组件提供编程接口(API),其底层采用了函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。Spark将数据在分布式环境下分区,然后,将作业转化为有向无环图(DAG),并分阶段进行DAG的调度和任务的分布式并行处理

(2)Spark SQL。Spark SQL的前身是Shark,是伯克利实验室Spark生态环境的组件之一,它修改了Hive的内存管理、物理计划、执行三个模块,并使之能运行在Spark引擎上,从而使得SQL查询的速度得到10~100倍的提升。与Shark相比,Spark SQL在兼容性方面性能优化方面,组件扩展方面都更有优势。

(3)Spark Streaming。Spark Streaming是一种构建在Spark算框架,它扩展了Spark流式数据的能力,提供了一套高效可容错的准实时大规模流式处理框架,它能与批处理、即时查询放在同一个软件栈,降低学习成本。

(4)GraphX。GraphX是一个分布式处理框架,它是基于Spark平台提供对图计算和图挖掘的简洁易用了丰富的接口,极大地方便了对分布式处理的需求。图的分布或者并行处理,其实是把图拆分成很多的子图,然后分别对这些子图进行计算,计算的时候可以分别迭代,进行分阶段的计算。对图视图的所有操作最终都会转换成其关联的表视图的RDD操作来完成,在逻辑上等价于一系列RDD的转换过程。GraphX的特点是离线计算批量处理,基于同步的整体同步并行计算模型(BSP)模型,这样的优势在于可以提升数据处理的吞吐量和规模,但会造成速度上的不足。

(5)MLlib。MLlib是构建在Spark上的分布式机器学习库,其充分利用Spark的内存计算和适合迭代型计算的优势,将性能大幅度提升,让大规模的机器学习的算法开发不再复杂。

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

我要反馈