Spark架构和运行流程
一个Spark集群正常启动的情况下会存在Master进程和Worker进程,只有创建了SparkContext对象才能实现与Spark集群的连接。
两大核心组件

从这张图里面我们可以看出Spark运行过程中的两个核心组件。
- Driver Program
- Executor
如果按照Spark设计思想中的主从架构,即master-slave架构。
那么Driver Program对应的就是我们的master,它负责管理整个集群的作业任务调度。具体包括:
- 将用户应用程序(例如我们的WordCount)转化成作业(Job);
- 在Executor之间调度任务(Task);
- 跟踪Executor的执行情况
各个Worker 节点中的Executor则是Slave,它们则负责具体的任务执行。具体包括:
- 负责运行具体的Spark应用的任务(Task),并将运行结果反馈给Driver Program;
- 提供内存存储(RDD直接缓存在Executor进程中,因此任务可以充分利用缓存数据来加速运算)
Spark运行流程
从上面的图中,我们可以简单总结Spark运行流程,具体如下:
- 构建Spark应用程序的运行环境(启动Driver Program,创建SparkContext对象)。
- SparkContext向Cluster Manager注册,申请运行Executor所需的资源。
- Cluster Manager为Executor分配资源并启动Executor进程。
- SparkContext将应用程序转化为具体的调度任务(Task),并分配给Executor(这一步内部还可以细化,后续补充)。
- Executor执行相关Task任务。
打赏