【Spark基础】Spark核心模块组成与功能概述

Spark基于Spark Core开发了多种组件。开发人员可以基于这些组件,轻松完成多种不同场景的计算任务。

 【Spark基础】Spark核心模块组成与功能概述_第1张图片

1.Spark Core介绍

Spark Core是Spark的核心,各类核心组件都依赖于Spark Core。如下图所示,Spark Core核心组件包括基础设施、存储系统、调度系统、计算引擎四个部分。

【Spark基础】Spark核心模块组成与功能概述_第2张图片

1)Spark基础设施

Spark基础设施为其他组件提供最基础的服务,是Spark中最底层、最常用的一类组件。

  • SparkConf:用于定义Spark应用程序的配置信息。
  • SparkContext:是Spark中的应用入口,实现了网络通信、分布式、消息机制、存储、计算、运维监控、文件系统等各类常用功能,并且封装为简单易用的API,是开发人员只需要简单的几行代码就可以实现相应功能。
  • Spark RPC:基于Netty实现的Spark组件间的网络通信组件。
  • ListenerBus:Spark事件监听总线,主要用于内部组件间的交互。
  • MetricsSystem:Spark度量系统,用于监控整个Spark集群中各个组件的运行状态。
  • SparkEnv:Spark执行环境变量。内部封装了Rpc环境、序列化管理器、广播管理器、map任务输出跟踪器、存储等Spark运行所需的基础环境组件。

2)Spark存储系统

Spark另一个核心组件就是存储系统,主要用于管理Spark运行过程中的数据存储。Spark存储系统会按照存储层次,将数据优先保存在内存,在内存不足时使用是本机磁盘,并且支持远程存储。

3)Spark调度系统

Spark调度系统主要包括DAG调度器和任务调度器两个部分。如下图所示,DAG调度器负责创建DAG并划分Stage,并基于Stage创建任务,并以任务集的形势提交任务。任务调度器,主要负责对任务进行批量调度。

【Spark基础】Spark核心模块组成与功能概述_第3张图片

4)Spark计算引擎

Spark计算引擎主要包括内存管理器、作业管理器、任务管理器、Shuffle管理器几个部分。Spark计算引擎负责Spark在任务执行过程中的内存分配、作业和任务运行、状态监控于管理等。

2.SparkSQL

SparkSQL是Spark提供的分布式SQL查询引擎。Spark基于抽象变成对象DataFrame和Dataset构建了基于SQL的数据处理方式,从而使大幅简化了分布式数据处理。SparkSQL允许开发人员将数据加载到Spark并映射成表,从而通过SQL语句来进行数据分析工作。

1)DataFrame

DataFrame是SaprkSQL的结构化数据的抽象,实现数据表的作用。Dataframe在RDD的基础上增加了数据结构信息Schema。基于Schema信息,Spark可以根据不同的数据结构,对数据的运算自动进行不同维度的优化。

Spark的DataFrame可以通过多种方式构建。支持RDD、CSV、XML、Hive、Parquet等数据转换为DataFrame。构建好DataFrame之后,开发人员就可以将DataFrame映射为表,并使用SQL语句进行数据分析工作。

2)Dataset

Dataset是Spark的分布式数据集合,同时具备RDD强类型化的有点和SparkSQL优化后执行引擎的有点。开发人员可以从JVM构建Dataset,并使用Map()等函数进行操作。

3.Spark Streaming

Spark Streaming是Spark的基于时间窗口的流式计算组件,支持从kafka、HDFS、Flume等多种数据源获取数据,然后利用Spark计算引擎以微批的形式进行处理,并将结果写入Radis、Kafka、HDFS等系统。

4.GraphX

GraphX是Spark的分布式图计算组件,利用Pergel提供的API,为开发人员提供可快速实现的图计算能力。

5.Spark MLlib

Spark MLlib事故Spark的机器学习库,提供了统计、分类、回归、预测、推荐等机器学习算法,并高度封装。从而为开发人员提供简单易用的机器学习能力

6.SparkR

SparkR是Spark的R语言包,用于在Spark中,提供一种轻量级的R语言使用方式,从而方便开发人员使用R语言处理大规模数据集。

你可能感兴趣的:(spark,大数据)