Spark 执行流程

Spark 执行流程 解析

1、我们提交Spark程序通过 spark-submit (shell)提交到Spark集群中 我们提交程序后 会创建一个Driver 进程

2、Driver  构造SparkConf 初始化SparkContext ,SparkContext 构建 DAGScheduler和TaskScheduler

3、TaskScheduler 初始化后会调用会去连接Master,向Master注册Application

4、Master 接受TaskScheduler 注册的请求之后会调用自己的资源调度算法,在spark集群的Worker上,为这个Application分配多个Executor

5、Master 并通知Worker启动Executor进程,Executor启动后会反向注册到 TaskScheduler

6、Driver继续执行 我们提交的(JAR)代码,读取文件生成RDD,

7、Driver每执行一个Action都会创建一个Job提交给DAGScheduler

8、DAGScheduler Job会为每个Job Stage划分算法,划分多个Stage,然后每个Stage 会创建一个TaskSet

9、DAGScheduler 会将TaskSet提交到TaskScheduler,TaskScheduler会将每个TaskSet里面的Task,提交到Executor

10、Executor每接受到一个Task后都会用TaskRunner封装,然后从线程池中获取一个线程来执行TaskRunner

11、TaskRunner 将我们编写的代码,也就是要执行的算子以及函数,拷贝、反序列化,然后执行Task (Task有两种 ShuffleMapTask和ResultTask,只有最后一个Stage是ResultTask,其他都是ShuffleMapTask)

总结 :整个Spark 应用程序的执行,就是Stage分批次作为taskset提交到executor执行 针对RDD的一个partition,执行我们定义的算子和函数,以此类推直到所有操作执行完为止

 

 

Yarn-Cluster 运行模式

1、spark-submit提交 到ResourceManager

2、ResourceManager 分配一个Container 在某个NodeManager上,启动ApplicationMaster

3、ApplicationMaster(相当于是Driver)找到ResourceManager请求Container,启动Executor

4、ResourceManager 分配一批Container,用于启动Executor

5、ApplicationMaster 连接分配的NodeManager 启动 Executor

6、Executor 反向向ApplicationMaster注册

7、ApplicationMaster 开始执行我们编写的代码,每执行一个Action 操作都会创建一个Job 提交给DAGScheduler

8、DAGScheduler Job会根据Stage划分算法,划分多个Stage,每个Stage都会创建一个TaskSet

9、DAGScheduler会将TaskSet提交给TaskScheduler

10、TaskScheduler会将TaskSet里面的每个Task提交到Executor上执行

11、Executor接受到Task后都会用一个TaskRunner来进行封装,然后从线程池中获取一个线程来执行这个Task

12、Task分为两种 一个是ShuffeMapTask和ResultTask,只有最后一个Task是ResultTask其他都是ShuffMapTask

 

 

基于Yarn-Client

1、spark-submit提交 到ResourceManager 会在本地启动Driver 

2、ResourceManager 分配一个Container 在某个NodeManager上,启动ApplicationMaster(这里的AM其实只是ExecutorLanucher)

3、ApplicationMaster向ResourceManager申请container 启动Executor

4、ResourceManager 分配一批Container,

5、ApplicationMaster 连接其他NodeManager 启动Executor

6、Executor 启动后反向注册 到本地提交的Driver进程上 而不是注册到ApplicationMaster上

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值