Spark 学习笔记----Spark内核架构深度剖析

一、Spark内核架构
1、Application
2、spark-submit
3、Driver
4、SparkContext
5、Master
6、Worker
7、Executor
8、 Job
9、DAGScheduler
10、TaskScheduler
11、ShuffleMap Task and Resut Task

二、Spark内核运行流程

Application: 写完的Spark应用程序,会被打成jar包,然后放到机器中,则自己写的应用程序就是Application
spark-submit:
Driver: 提交完Application之后,会在提交的机器上启动一个Driver,是一个Driver进程,会执行Application应用程序。
(将Application打成jar包,结合shell,使用Standalone提交模式,其实会通过反射 的方式,创建和构建一个DriverActor进程出来)
通常Application的开始会先构建SparkConf 和SparkContext.
SparkContext: SparkContext在初始化的时候,做的最重要的两件事就是构建出来DAGScheduler和TaskScheduler(SparkContext是一个对象,不是进程)
TaskScheduler: 构造TaskScheduler后,TaskScheduler实际上会负责通过它的一个后台进程去连接Master,然后向Master注册Application。TaskScheduler有自己的后台进程
Master: Mater接收到Application的注册请求之后,会使用自己的资源调度算法(Master资源分配算法),在Spark集群的worker上为这个Application启动多个Executer(Master通知Worker启动Executor)。
Worker: Worker会为Application启动Executor进程
Executor : 是一个进程,Executor启动之后会自己反向注册到TaskScheduler上去,此时TaskScheduler就知道了自己服务于当前Application的Executor有哪些了,因为Master可能为这个Application启动了很多个Executor,但是启动起来的Executor都会自己反向注册到这个Application对应的SparkContext中的TaskScheduler上去。

所有Executor都反向注册到Driver上之后,Driver结束SparkContext初始化,会继续执行我们自己编写的代码

job: 每执行到一个Action就会创建一个job,job会提交给DAGScheduler,DAGScheduler会将job划分为多个stage(stage划分算法),然后每个stage创建一个TaskSet,每一个TaskSet会给TaskScheduler,TaskScheduler会将TaskSet中的每一个Task提交到Executor上执行。这里就体现出来,之前哪些Executor反向注册到了TaskScheduler上去,TaskScheduler在接收到TaskSet之后就会将Task提交到哪些Executor上去(Task分配算法)。

TaskRunner: TaskScheduler将Task提交到Executor上之后,Executor内部有一个线程池,Executor没接收到一个Task都会用TaskRunner封装task,然后从线程池中取出一个线程执行这个task。会将我们编写的代码,也就是执行的算子以及函数拷贝、反序列化,然后执行task.
ShuffleMap Task and Resut Task: Task有两种,ShuffleMapTask和ResultTask,只有最后一个stage是ResultTask,之前的stage都是ShuffleMapTask。

所以最后整个spark应用程序的执行,就是stage分批次作为taskSet提交到Executor执行,每一个Task针对RDD的一个partition,执行我们定义的算子和函数。这就相当于并行处理,一个Task需要处理RDD中的一个partition,那么大量的Task就并行处理RDD,RDD中可能会有大量的数据,大数据的处理其实就是通过大量的Task并行地去执行我们定义的算子和函数。以此类推,直到所有操作执行完为止。

Spark 学习笔记----Spark内核架构深度剖析_第1张图片

本文为北风网Spark2.0培训视频的学习笔记
视频链接:https://www.bilibili.com/video/av19995678?p=41

你可能感兴趣的:(Spark)