Spark架构原理。
1.Spark架构相关进程
我们以Spark的standalone集群为例进行分析Spark的相关进程。
- Driver:我们编写的Spark程序就在Driver(进程)上,由Driver进程负责执行,Driver进程所在的节点可以是Spark集群的某一个节点或者就是我们提交Spark程序的客户端节点,具体Driver进程在哪个节点上启动是由我们提交任务时指定的参数决定的,这个后面我们会详细分析。
- Master:集群的主节点中启动的进程,主要负责集群资源的管理和分配,还有集群的监控等。
- Worker:集群的从节点中启动的进程,主要负责启动其它进程来执行具体数据的处理和计算任务。
- Executor:此进程由Worker负责启动,主要为了执行数据处理和计算。
- Task:是一个线程,由Executor负责启动,它是真正干活的。
2.Spark架构原理
通过下面这个图,我们来分析一下Spark的架构原理。

- 首先我们在spark的客户端机器上通过driver进程执行我们的Spark代码,当我们通过spark-submit脚本提交Spark任务的时候Driver进程就启动了。
- Driver进程启动之后,会做一些初始化的操作,会找到集群master进程,对Spark应用程序进行注册。
- 当Master收到Spark程序的注册申请之后,会发送请求给Worker,进行资源的调度和分配。
- Worker收到Master的请求之后,会为Spark应用启动Executor进程,会启动一个或者多个Executor,具体启动多少个,会根据你的配置来启动。
- Executor启动之后,会向Driver进行反注册,这样Driver就知道哪些Executor在为它服务了。
- Driver会根据我们对RDD定义的操作,提交一堆的task去Executor上执行,task里面执行的其实就是具体的map、flatMap这些操作。