面试|spark模块 spark的工作流程?

 

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。

 

公众号搜索       guowei 

 

——专注于大数据面试讲解,致力于用最简洁的语言把解题思路讲清楚。

发布了77 篇原创文章 · 获赞 34 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章