Spark的架构与基本运行流程
- 一、Spark中的核心概念
- 二、Spark中的核心架构设计
一、Spark中的核心概念
(1)RDD,Spark中最核心的概念就是RDD(Resillient Distributed Dataset,弹性分布式数据集)。换而言之,整个RDD就是Spark中的最核心数据抽象。相较于关系型数据库,在Spark中主要是对RDD进行一次又一次的操作。
RDD是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。即RDD一旦生成后,是不允许去修改的,它是只读的,所以它受限。
(2)DAG,是Directed Acyclic Graph(有向无环图)的简称,反映了RDD之间的依赖关系。
我们在对Spark进行编程时,就是将数据加载到内存生成RDD,然后对RDD进行一次又一次的操作,最终得到结果。而对RDD间的一次又一次操作就构成了DAG,因此DAG就反映了RDD之间的依赖关系。
(3)Executor,是运行在工作节点(WorkerNode)上的一个进程,负责运行任务。一个Executor进程会派生出很多线程,每个线程会具体负责每一个任务,如下图所示。
(4)Application,是用户编写的Spark应用程序。
(5)Task,任务,是运行在Executor上的工作单元。
(6)Job,作业,一个作业包含多个RDD,以及相应RDD上的各项操作。
(7)Stage,阶段,是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集。
二、Spark中的核心架构设计
这个Spark的运行架构如下图所示。
一张图讲的很清楚了。一个应用被提交后,将会被生成很多个作业(具体生成多少个作业,则取决于里面的相关代码)。每一个作业又会被切分为多个阶段
执行结束后,Spark会将结果返回给Driver节点,返回给用户;或者写入HDFS或其他数据库,相应的过程如以下2张图所示。
【彩蛋来了】
看完作者写的这篇博文,请参见:
- https://vault.centos.org/6.6/os/i386/repodata/repomd.xml: [Errno 14] problem making ssl connection
created in 2022.12.11,updated in 2022.12.08