开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天juejin.cn/post/716729…
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这些操作。
Spark架构相关进程
下面我们来看一下Spark架构相关的进程信息
注意:在这里是以Spark的standalone集群为例进行分析
- Driver:
我们编写的Spark程序就在Driver(进程)上,由Driver进程负责执行
Driver进程所在的节点可以是Spark集群的某一个节点或者就是我们提交Spark程序的客户端节点
具体Driver进程在哪个节点上启动是由我们提交任务时指定的参数决定的,这个后面我们会详细分析
- Master:
集群的主节点中启动的进程
主要负责集群资源的管理和分配,还有集群的监控等
- Worker:
集群的从节点中启动的进程
主要负责启动其它进程来执行具体数据的处理和计算任务
- Executor:
此进程由Worker负责启动,主要为了执行数据处理和计算
- Task:
是一个线程
由Executor负责启动,它是真正干活的