2021-05-28

spark的工作流程是什么​

所有spark程序都离不开程序初始化执行任务这两部分。

一、程序初始化的流程

  1. 用户通过sparksubmit提交程序以后,driver程序开始运行(driver程序就是运行起来的提交的程序,可以理解为spark的main程序)。

  2. driver程序运行起来会首先初始化sparkContext。

  3. 在SparkContext对象中做的最重要的事情就是构造出一个DAGSchedule和一个TaskScheduler。

  4. 上述的TaskScheduler构建出来以后,通过它的一个后台进程去向spark的Master节点注册该driver对应的application,此时该application也附带了该spark程序所需要的资源信息。

  5. Master接收到这个Application的时候,会根据application所需要的资源,从自己的work节点启动对应的Executor进程。

  6. 当worker节点中的Executor进程启动起来之后,会反向注册到TaskScheduler上面,通知TaskScheduler,我已经准备好了,可以干活了。

  7. 至此,new sparkcontext()初始化完毕,TaskScheduler已经拿到了Executor资源。

二、任务执行的流程

  1. 先进行Job及Stage的切分,当程序每读到action的时候,DAGScheduler开始切分Job,根据宽窄依赖切分Stage,然后封装成TaskSet,将TaskSet发送给TaskScheduler,一个TaskSet对应一个Stage,一个Stage在对应的一个job里面。

  2. 发送task到执行进程,当TaskSchedule拿到TaskSet以后,会将TaskSet打散,变成一个个的task,TaskScheduler会把Taskset里面每一个Task提交到分配的Executor中去执行。

  3. task开始执行,当Executor接收到Task一块,会启动一个TaskRunner,将Task封装起来,TaskRunner会从线程池中拿一个线程会运行这个task。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值