Spark内核架构深度剖析

Spark内核架构深度剖析

Spark内核架构

Application

  • 提交的Spark程序的机器

spark-submit

  • spark-submit提交Spark程序
  • Spark-submit使用之前一直使用的那种提交模式提交,叫做Standalone,其实会通过反射的方式,创建和构造一个DriverActor进行

Driver

  • 启动一个进程
  • 执行Application应用程序
  • 执行构造SparkConf和SparkContext

SparkContext

  • 初始化时,做的最重要的事情就是构造DAGScheduler和TaskScheduler
  • TaskScheduler通过它对应的一个后台进程,连接Master,向Master注册Application
  • 所有Executor都反响注册到Driver上之后,Driver结束SparkContext初始化,会继续执行我们自己编写的代码。
  • 每执行到一个action,就会创建一个job。

Master

  • Master接收到Application注册的请求后,会使用自己的资源调度算法,再Spark集群的Worker上,为这个Application启动多个Executor(Master通知Worker启动Executor)

Worker

  • Worker上,为这个Application启动多个Executor

Executor

  • Executor启动之后会自己反向注册到TaskScheduler上去
  • Executor没接收到一个task,都会用TaskRunner来封装task,然后从线程池里取出一个线程,执行这个task。
  • TaskRunner,将编写的代码,拷贝,反序列化,然后执行Task。

Job

  • Job会提交给DAGScheduler

DAGScheduler

  • DAGScheduler会将job划分为多个stage,然后每个stage创建一个TaskSet。(stage划分算法)
  • 每个TaskSet会给每个TaskScheduler。

TaskScheduler

  • TaskScheduler会把TaskSet里面的每个Task提交到Executor上执行(task分配算法)

ShuffleMapTask and ResultTask

  • task有两种ShuffleMapTask 和ResultTask
  • 只有最后一个stage时ResultTask,之前的stage都是ShuffleMapTask。
  • 最后整个spark应用程序的执行,就是stage分批次作为taskset提交到Executor执行,每个task针对RDD的一个Partition,执行我们定义的算子和函数,以此类推,直到所有操作执行完为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值