Spark核心组件
Driver
Spark Driver节点用于执行Spark应用中的main方法,负责代码的实际执行工作,它在运行Spark应用是主要负责:
- 将用户程序转化为作业(Job)
- 在Executor之间进行进行任务(Task)调度
- 跟踪Executor执行情况
- 通过UI展示运行情况
Executor
Spark Executor节点是一个Java进程,负责在Spark作业中运行具体任务,任务间相互独立。Spark应用启动时,Executor节点被同时启动,并且始终伴随着整个应用的生命周期而存在。如果有Executor节点发生故障,该节点的任务会调度到其他Executor节点继续执行。
Executor有两个核心功能:
- 负责运行Spark应用的任务,并将结果返回Driver
- 通过自身的块管理器(Block Manager)为用户程序中需要缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
Spark运行流程
image.png在任何部署模式下,任务提交后都会先启动Driver进程,然后向集群管理器注册应用,之后集群管理器根据应用配置分配Executor并启动,当Driver所需资源全部满足时,开始执行用户程序中的main函数,由于Spark任务为懒执行,所以当执行至action算子时,开始进行反向推算,根据款依赖进行stage的划分,每一个stage中所有task形成一个taskSet,根据本地化原则,taskSet被分发到指定的Executor去执行,在执行过程中,Executor会与Driver进行通信,报告人物运行情况。
网友评论