1. 目的

我们将学习Apache Spark生态系统组件,如Spark Core、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX和SparkR,还将学习Spark生态系统组件的功能。

2. Spark简介

Spark是通用分布式计算系统,它提供了使用Scala,Java,Python和R语言的API。Spark丰富的API支持结构化数据处理、流式处理、机器学习、图处理。

3. Spark生态系统组件介绍

以下是Spark生态系统中的6个组件,它们是 Spark Core、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX和SparkR。

3.1 Spark Core

所有由Spark提供的功能都建立在Spark Core之上。Spark Core通过在内存中计算来保证速度,它是大数据集并行和分布式处理的基础。

Spark Core的主要功能是:

提供基本的I / O功能。

任务调度。

故障恢复。

Spark Core中有一个称为RDD(弹性分布式数据集)的特殊集合,它是Spark的分布式数据集抽象。RDD有两种操作:转换(transformation)和行动(action)

转换:从现有RDD生成新RDD。转换是延迟计算的,也就是说从一个RDD生成另一个RDD的转换操作不是马上执行,需要等到有行动操作时,才真正触发计算。

行动:触发Spark提交作业(Job),并将数据输出到Spark系统。

3.2 Spark SQL

Spark SQL组件是用于结构化数据处理的Spark模块,它是分布式SQL查询引擎,在运行中可以获得更多的数据结构信息,有了这些信息,Spark可以执行额外的优化。Spark SQL用于访问结构化和半结构化信息,它还支持跨流式和历史数据的强大的交互式分析应用程序。

Spark SQL的特性包括:

3.2.1 查询优化器。

3.2.2 与现有的Hive完全兼容。

3.2.3 DataFrame和SQL提供了访问各种数据源的通用方法,包括Hive,Avro,Parquet,ORC,JSON和JDBC。

3.3 Spark流(Spark Streaming)

Spark Streaming实现实时数据流的可扩展、高吞吐量、高容错流处理。它可以访问Kafka、Flume、Kinesis、TCP套接字等来源的数据,然后使用各种算法进行操作,最后,把处理的数据提供给文件系统、数据库或实时仪表盘。Spark Streaming使用微批处理技术将流视为一系列小批量数据,它将实时数据分组为小批量,然后将其交付给批处理系统进行处理。它还提供容错特性。

Spark Streaming如何工作?

1) 数据搜集

Spark Streaming提供了两类内置流媒体源:

基本来源:由StreamingContext API提供,例如:文件系统、TCP套接字。

高级来源:通过Kafka、Flume、Kinesis等获得。

2) 数据处理

收集到的数据使用函数进行处理,例如:map、reduce、join、window。

3) 数据存储

处理的数据被发送到文件系统、数据库、实时仪表盘。

Spark Streaming提供了高级抽象 – 离散流(Discretized Stream or DStream)。

DStream表示连续的数据流,在内部是一系列RDD。我们可以从Kafka、Flume或Kinesis等得到DStream,或者通过其他DStream上的高级操作来形成新的DStream。

3.4 机器学习(Spark MLlib)

MLlib是一个可扩展的机器学习库,它提供高质量机器学习算法。

MLlib创建背后的动机是让机器学习具有可扩展性和易用性,它包含各种机器学习算法,例如:聚类、回归、分类。一些较低级别的机器学习原语也存在于MLlib中。

3.5 Spark GraphX

GraphX利用Spark为计算引擎,实现了大规模图计算的功能,并提供了类似Pregel的编程接口。图算法是很多复杂机器学习算法的基础,GraphX是常用图算法在Spark上的并行化实现,提供了丰富的API接口。 

3.6 SparkR

SparkR是Spark 1.4发行版。SparkR的关键组件是SparkR DataFrame。DataFrame是R中数据处理的基础数据结构,DataFrame的概念可以扩展到其他语言,如Pandas等。

R是提供用于数据处理、计算和图形显示的软件工具。SparkR的主要思想是探索不同的技术,将R的可用性与Spark的可扩展性结合起来。

SparkR的优点:

1) 数据源API:通过Spark SQL的数据源API,SparkR可以从各种源读取数据,例如:Hive、JSON文件、Parquet文件等。

2) DataFrame优化:SparkR DataFrame继承了对计算引擎的所有优化,例如:内存管理等。

3)内核和机器的可扩展性:在SparkR DataFrame上执行的操作分布在Spark集群中可用的所有内核和机器上。 因此,SparkR DataFrame可以运行在万亿字节的数据上,并且可以与数千台机器一起运行。

4. 结论

Spark生态系统组件使其比其他大数据框架更受欢迎,它是多范式数据处理的通用平台,例如:结构化数据处理、实时流数据处理、机器学习、图处理等。Spark通过替换MapReduce来提供迭代处理逻辑。它使用Scala和Python REPL提供交互式代码执行,也可以使用Scala、Java、Python编写和编译应用程序然后提交到Spark执行。



关注微信服务号,手机看文章
关注微信服务号,手机看文章