Spark作业提交
一、提交流程图(Yarn Cluster模式)
提交流程.png
二、流程说明
1.client向RM提交请求,并上传jar到HDFS
这期间包括四个步骤:
(a)连接到RM
(b) 从 RM(Applications Manager)中获得metric、queue和resource等信息
(c) 上传jar包
(d) 设置运行环境和container上下文
2.ASM 向 Scheduler 申请空闲 container
3.Scheduler 向 ASM 返回空闲 container 信息(NM 等)
4.RM(ASM)根据返回信息向 NM 申请资源。
5.NM 分配创建一个container 并创建Spark Application Master(AM)[运行的是 Spark Driver,同时创建DAGScheduler、TaskScheduler等组件]
6.AM启动后,和RM(ASM)通讯,请求根据任务信息向RM(ASM)申请 container 来启动 executor
7.RM(ASM)将申请到的资源信息返回给AM
8.AM 根据返回的资源信息区请求对应的 NM 分配 container 来启动 executor
9.NM 收到请求会启动相应的 container 并启动 executor
10.executor 启动成后反向向 AM 注册
11.executor 和 AM 交互完成任务
12.等到所有的任务执行完毕后,AM向ASM取消注册并释放资源
三、Driver&Executor职责说明
1、Driver
Driver在任务提交过程中最主要解决如下几个问题:
(a) RDD依赖分析,生成DAG
(b)基于DAG将Job分割成为多个Stage
(c)Stage确认后,即生成相应的Task,并将生成的Task分发到Executor执行
2、Executor
Executor节点在接收到执行任务的指令后,启动新的线程,运行接收到的任务并将任务的处理结果返回