Spark的架构和任务调度

Spark的任务调度顺序:


1.首先我们会选择集群中的一台机器去提交我们的代码,我们提交的这个代码就是一个application

2.如果是client的模式,会在提交任务的这台机器上面开启一个driver线程,如果是cluster的模式,会随机选择一台机器开启driver线程,driver开启以后,就开始打算执行提交的代码,开启driver的时候对SparkContext进行初始化,因为SparkContext是程序执行的入口,初始化的内容是:启动一个DAGScheduler(面向stage进行任务调度),启动一个TaskScheduler(面向task进行任务调度)

3.TaskScheduler会向master去进行请求注册,master就接收到有任务执行的消息,master就会去找worker启动资源,也就是启动excuter

4.Excuter执行完后会向driver进行反向注册,这样driver就知道有哪些excuter为他服务。因为action操作会触发我们代码的真正的执行,一个action就对应一个job任务。这个job由DAGScheduler负责,DAGScheduler会根据stage划分算法把这个job划分为多个stage,DAGScheduler会为每个stage创建一个TaskSet(一个集合可以装多个task)

5.DAGScheduler把刚刚创建好的TaskSet集合发送给TaskScheduler,TaskScheduler将这些TaskSet发送到不同的excuter上面,发送之前要进行序列化,序列化以后文件会变小,这样在传送的过程中会减小带宽

当发送到excuter上面的时候要将task进行反序列化,反序列化后将task放进线程池里面包装成线程,这样task才能被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值