目录
一:Spark特点
- 运行速度快:Spark使用先进的有向无环图(DAG)执行引擎,以支持循环数据流与内存计算。
- 容易使用:Spark支持Scala, Java, Python, R语言进行编程。
- 通用性:Spark提供强大的而完整的技术栈。
- 运行模式多样:Spark可以运行于独立的集群模式中,或者运行于Hadoop中。
二:Spark Core
Spark Core 包含Spark最基础最核心的功能,如内存计算,任务调度,部署模式,故障恢复,存储管理,主要面向批处理数据。Spark Core建立在同一的抽象RDD之上,使其可以以基本一致的方式来应对不同的大数据处理场景。Spark Core通常被简称为Spark.
三:Spark基本概念
- RDD: 弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
- DAG:有向无环图,反映RDD之间的依赖关系
- Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据。
- 应用Application:用户编写的spark应用程序。
- 任务(Task):是运行在Executor上的工作单元。
- 作业(Job):一个作业包含多个RDD及作用于相应RDD上的各种操作。
- 阶段(Stage):是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为阶段。
四.Spark架构设计
4.1 整体架构
理解:
- 一个应用由一个Driver和若干个作业构成,一个作业由多个阶段构成,一个阶段由多个没有Shuffle关系的任务组成。
- 当执行一个应用时,Driver会像集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行任务,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中。
4.2 Executor
是集群中工作节点(worker)中的一个进jvm进程,负责在spark作业中运行具体任务(task),任务彼此之间相互独立。spark应用启动时,executor节点被同时启动,并且始终伴随着整个spark应用的生命周期而存在。executor有两个核心功能:
- 负责运行组成spark应用程序的任务,并将结果返回给驱动器进程
- 通过自身的快管理器(block