Spark 工作流程

本文详细介绍了Spark job在YARN上的提交过程和执行机制,包括SparkContext如何调度任务,Executor如何分配执行,以及Yarn-cluster和Yarn-client两种模式的区别。在Yarn-cluster模式下,Driver运行在Application Master中,而在Yarn-client模式下,Driver运行在本地客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Spark job提交过程

Driver的任务提交过程

 

1、Driver程序的代码运行到action操作,触发了SparkContext的runJob方法。 

2、SparkContext调用DAGScheduler的runJob函数。 

3、DAGScheduler把Job划分stage,然后把stage转化为相应的Tasks,把Tasks交给TaskScheduler。 

4、通过TaskScheduler把Tasks添加到任务队列当中,交给SchedulerBackend进行资源分配和任务调度。 

5、调度器给Task分配执行Executor,ExecutorBackend负责执行Task。

 

2. Spark on YARN的作业执行机制

 

1、基于YARN的Spark作业首先由客户端生成作业信息,提交给ResourceManager。

2、ResourceManager在某一NodeManager汇报时把AppMaster分配给NodeManager。

3、NodeManager启动SparkAppMaster。

4、SparkAppMastere启动后初始化然后向ResourceManager申请资源。

5、申请到资源后,SparkAppMaster通过RPC让NodeManager启动相应的SparkExecutor。

6、SparkExecutor向SparkAppMaster汇报并完成相应的任务。

7、SparkClient会通过AppMaster获取作业运行状态。

 

3. 基本运行流程

 

详细的运行流程为:

  1. 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源;
  2. 资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上;
  3. SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor。
  4. Task在Executor上运行,运行完毕释放所有资源。

 

4. yarn-cluster模式的作业执行图

5. Spark on Yarn调用流图

Spark on Yarn支持两种部署模式:Cluster VS Client。

两种模式最大的区别在于Spark Driver的运行位置,Cluster模式下Driver运行在Application Master中,而Client模式下Driver运行在本地。

5.1 Yarn Cluster模式

在Yarn-cluster模式下,driver运行在Appliaction Master上,Appliaction Master进程同时负责驱动Application和从Yarn中申请资源,该进程运行在Yarn container内,所以启动Application Master的client可以立即关闭而不必持续到Application的生命周期,下图是yarn-cluster模式

Yarn-cluster模式下作业执行流程:

1. 客户端生成作业信息提交给ResourceManager(RM)

2. RM在某一个NodeManager(由Yarn决定)启动container并将Application Master(AM)分配给该NodeManager(NM)

3. NM接收到RM的分配,启动Application Master并初始化作业,此时这个NM就称为Driver

4. Application向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor

5. Executor向NM上的Application Master注册汇报并完成相应的任务

 

5.2 Yarn Client模式

在Yarn-client中,Application Master仅仅从Yarn中申请资源给Executor,之后client会跟container通信进行作业的调度,下图是Yarn-client模式

Yarn-client模式下作业执行流程:

1. 客户端生成作业信息提交给ResourceManager(RM)

2. RM在本地NodeManager启动container并将Application Master(AM)分配给该NodeManager(NM)

3. NM接收到RM的分配,启动Application Master并初始化作业,此时这个NM就称为Driver

4. Application向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor

5. Executor向本地启动的Application Master注册汇报并完成相应的任务

 

参考:

https://blog.youkuaiyun.com/liu812769634/article/details/53102465

https://www.cnblogs.com/miqi1992/p/5621268.html

https://www.cnblogs.com/MOBIN/p/5857314.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值