美文网首页
Spark内核系列(一)Spark内核架构

Spark内核系列(一)Spark内核架构

作者: 再无风雨也无情_ | 来源:发表于2017-11-29 10:18 被阅读0次

    架构流程图

    说明

    1. SparkContext初始化 (Standalone模式)

    1.首先spark-submit提交Spark应用程序Application.

    2.提交之后spark会通过反射的方式创建和构造一个DriverActor进程(Driver进程).

    3.Driver进程启动后会进行SparkContext初始化,SparkContext初始化过程中做的最重要的两件事就是构造DAGScheduler和TaskScheduler.

    4.构造完TaskScheduler时,TaskScheduler会去连接Master并向Master注册Application

    5.Master接收到Application注册请求后会使用自己的资源调度算法,在Spark集群的Work上为这个Application启动多个Executor.

    6.Executor启动之后反注册到TaskScheduler.

    7.当所有Executor都反向注册到TaskScheduler之后,Driver结束SparkContext的初始化。至此,SparkContext的初始化就告一段落了,接着会继续执行我们自己编写的代码。

    2.TaskSet的创建与提交

    1.上面讲到,SparkContext的初始化完成之后,接着会继续执行我们自己编写的代码,每执行到一个Action操作就会创建一个job,该job会提交到DAGScheduler,划分为多个stage(stage划分算法),然后为每个stage创建一个TaskSet.

    2.TaskScheduler把TaskSet中的每一个task提交到executor上执行。哪些task提交到哪些executor上执行?(task分配算法).

    3.executor执行task

    1.Executor每次收到一个task都会用TaskRunner来封装task,然后从线程池里取出一个线程执行这个task.(TaskRunner将需执行的算子及函数、拷贝、反序列化然后执行task.)

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

    小结:整个spark应用程序的执行,就是stage分批次作为taskset提交到executor执行,每个task针对RDD的一个partition执行我们定义的算子和函数,以此类推,直到所有操作执行完成为止。另外,上面提到了三个算法,‘Master 的资源调度算法’,‘ stage划分算法 ’,‘ task分配算法 ’,在后面的文章中再详细介绍。

    相关文章

      网友评论

          本文标题:Spark内核系列(一)Spark内核架构

          本文链接:https://www.haomeiwen.com/subject/zuzybxtx.html