Spark任务提交流程


1. Spark运行原理

image.png

(1)sparkContext向资源管理器注册并申请资源
(2)资源管理器根据预先设定的算法,在资源池里分配合适的Executor运行资源
(3)应用(Main函数里的算子)构建有向无环图
(4)DAGScheduler将图转换成TaskSet
(5)TaskScheduler负责TaskSet的任务分发。

2. Spark on Yarn

2.1 Yarn-Cluster模式
image

(1)ResourceManager接到请求后在集群中选择一个NodeManager分配Container,并在Container中启动ApplicationMaster进程;
(2)在ApplicationMaster进程中初始化sparkContext;
(3)ApplicationMaster向ResourceManager申请到Container后,通知NodeManager在获得的Container中启动excutor进程;
(4)sparkContext分配Task给excutor,excutor发送运行状态给ApplicationMaster。

2.2 Yarn-Client模式
image

(1)ResourceManager接到请求后在集群中选择一个NodeManager分配Container,并在Container中启动ApplicationMaster进程;
(2)driver进程运行在client中,并初始化sparkContext;
(3)sparkContext初始化完后与ApplicationMaster通讯,通过ApplicationMaster向ResourceManager申请Container,ApplicationMaster通知NodeManager在获得的Container中启动excutor进程;
(4)sparkContext分配Task给excutor,excutor发送运行状态给driver。

3. Spark任务提交源码分析

你可能感兴趣的:(Spark任务提交流程)