spark模块 spark的工作流程?

本文深入解析Spark的工作流程,包括程序初始化阶段的Driver程序运行、SparkContext初始化、DAGScheduler和TaskScheduler构建,以及向Master注册并获取Executor资源的过程。同时,详细阐述任务执行流程,从Job和Stage的切分到Task的调度与执行,帮助读者全面理解Spark的运行机制。
摘要由CSDN通过智能技术生成

 

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值