spark on yarn 作业执行流程

一 spark application 与job关系

spark application会有几个job,取决于调用了几次DAGScheduler.

如果是spark SQL则取决相应的实现,会存在job group 的情况(多个job)

RDD一般是一个action有一个job,如果take,sample。另外checkpoint也触发一个job.

Spark client模式下,所有的jar和资源都是和driver在一起,不会出现jar丢失的情况,spark可以从hdfs上读取

spark cluster模式下,会出现无法找到jar的情况

 

二  yarn cluster执行流程

<1> spark client准备阶段

a>.spark client 向 RM发送执行任务请求,RM为其分配applicationID,为其分配hdfs目录[hdf为其分配目录,保存spark执行的资源、依赖,job中间结果(hdfs:///user/用户/.sparkStaging/applicationId

)]

b>.然后把本地配置文件【spark的配置参数,会打成sparkconf.zip的包

】、jar【上传spark程序的jar包,就是你写的工程jar

,spark所需的jar包

】等资源上传至RM为属于自己的hdfs目录

c>.初始化完毕,向RM申请资源

 

 

<2> Driver,Executor初始化

a>RM根据请求,查看资源队列,为期分配可用的NM(负责在收到containter创建请求时后创建,不关心执行什么任务),NM进行container创建,并上报创建完毕

b>RM 收到请求后,告知spark client

c> spark client发送命令到NM的container中,创建Application Master,然后有Application Master负责 任务协调,executor容器创建

d> Application Master向RM申请container,准备启动executor容器

e> RM 调度有资源的NM,让其创建container,用于Application Master启动executor

f> Application Master获得NM container后,发送启动executor命令,executor启动后,会进行反向注册到Application Master,进行心跳检测和结果返回,任务调度

 

 

<3> spark job执行

a> Driver进行spark job解析,DAGScheduler负责DAG构建,然后根据shuffle 算子进行切分stage,

TaskScheduler将stage分解成TaskSet,然后通过Cluster Manager提交Task到 Application Master

SchedulerBackend(LocalSchedulerBackend,CoarseGrainedSchdulerBack)负责task的启动、停止、kill

Executor接受到Application Master分发的任务进行处理,并不断发送心跳信息,返回最终只想结果,

用于结果聚合和推测执行,故障恢复

 

 

<4> 结束阶段

a>Executor结束,Driver结束,

b> Application Master 向RM注销,Application 结束

c>RM,NM等待下一个任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值