spark 内核源码剖析一:Sprak内核架构

1.架构

Spark内存架构,主要由以下组成:

  • 1、Application
  • 2、Spark-submit
  • 3、Driver
  • 4、SparkContext
  • 5、Master
  • 6、Worker
  • 7、Executor
  • 8、Job
  • 9、DAGScheduler
  • 10、TaskScheduler
  • 11、ShuffleMapTask and ResultTask

2、Spark应用程序执行过程

  • 1、通过spark-submit——shell 脚本提交Application(自己的Spark程序)——启动一个Driver进程;当然还有别的方式提交Application,后面会继续介绍
  • 2、Driver执行Application应用程序,生成SparkContext(下面3—8步都是在进行SparkContext初始化)
  • 3、SparkContext在初始化时,会构造DAGScheduler和TaskScheduler
  • 4、TaskScheduler通过它对应的一个后台进程,去连接Master,向Master注册Application
  • 5、Master接收到Application注册的请求之后,会使用自己的资源调度算法,通知Worker,为这个Application启动多个Executor
  • 6、worker会为Application启动Executor
  • 7、Executor启动之后会自己反向注册到TaskScheduler
  • 8、所有Executor都反向注册到Driver上之后,Driver结束SparkContext初始化,会继续执行我们自己编写的代码
  • 9、继续执行代码,每执行一个action,就会创建一个Job,Job 会提交给DAGScheduler
  • 10、DAGScheduler会将job划分为多个stage,然后为每个stage创建一个TaskSet(stage划分算法)
  • 11、DAGScheduler创建完成taskSet以后,TaskScheduler会把TaskSet里的每一个task提交到Executor执行(task分配算法)
  • 12、Executor每接收到一个task,都会用TaskRunner来封装task,然后从线程池取出一个线程,执行这个task
  • 13、所以,最后整个spark应用程序的执行,就是stage分批次作为taskSet提交到Executor执行,每个task针对RDD的一个partiton,执行我们定义的算子和函数,以此类推,直到所有的操作都执行为止

Task有两种,ShuffleMapTask和ResultTask,只有最后一个stage是ResultTask,之前的stage,都是ShuffleMapTask

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容