spark 内核架构分析

目录

  • 1、sparkcontext
  • 2、TaskScheduler 组件
  • 3、DAGScheduler 组件

1、sparkcontext

     spark-submit,这个shell 脚本会有自己编写的spark程序 Application,以及相关要求资源信息。由于基于Standalone模式,其会根据反射的方式,创建和构造一个Driver 进程。

     Driver 进程会执行 Application 应用程序,也是我们编写的代码,在我们编写的代码中,先构造sparkConf,再构造sparkContext。在sparkContext 中 有两个主要的组件 DAGScheduler和 TaskScheduler。

2、TaskScheduler 组件

     TaskScheduler 实际上是会负责,通过它对应的一个后台进程,去连接Master,向 Master 注册 Application。  spark 集群中 Master接收到 Application 注册请求之后,会使用自己的资源调度算法,在 spark 集群中的 Worker 上,为这个Application 启动多个Executor。

      Master 通知 Worker 启动 Executor,  Worker 进程会为 Application 启动 Executor。 Executor 启动之后会自己反向注册到TaskScheduler上去。当所有的Executor都反向注册到TaskScheduler之后,Driver 则结束 sparkContext 初始化,会继续执行我们自己编写的spark 代码。

3、DAGScheduler 组件

     在执行自己编写的spark代码中,每遇到一个action 操作,就会创建一个job,这个job 会提交到DAGScheduler,DAGScheduler会根据 stage 划分算法 将一个job 划分为多个 stage,然后每个stage创建一个taskSet。 DAGScheduler 会根据 task 分配算法将taskSet 中 每个 task 提交到 executor 上执行。

     在spark集群中woker 节点中executor进程中,executor 每接收到一个task,都会使用 taskRunner 封装 task, 然后从线程池中取出一个线程,来执行这个task。taskRunner 将我们编写的代码,进行拷贝和反序列化,然后执行task。task 有两种:shuffleMapTask 和 resultTask。只有最后一个stage,是resultTask,之前的stage都是shuffleMapTask。最后整个spark应用程序的执行,就是stage分批次作为 taskSet提交到 Executor 执行,而每个task针对RDD的一个partition,执行我们自己定义的函数算子,依次类推,直至所有的操作执行完为止。

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值