数据学习从0到1 Spark架构原理

231 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天juejin.cn/post/716729…

Spark架构原理

下面来看一个图,通过刚才那几个进程,我们来分析一下Spark的架构原理

image.png

  1. 首先我们在spark的客户端机器上通过driver进程执行我们的Spark代码
    当我们通过spark-submit脚本提交Spark任务的时候Driver进程就启动了。
  2. Driver进程启动之后,会做一些初始化的操作,会找到集群master进程,对Spark应用程序进行注册
  3. 当Master收到Spark程序的注册申请之后,会发送请求给Worker,进行资源的调度和分配
  4. Worker收到Master的请求之后,会为Spark应用启动Executor进程
    会启动一个或者多个Executor,具体启动多少个,会根据你的配置来启动
  5. Executor启动之后,会向Driver进行反注册,这样Driver就知道哪些Executor在为它服务了
  6. 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负责启动,它是真正干活的