Spark----Spark 任务执行流程分析

Spark 任务执行流程分析 

Spark 任务的任务执行流程文字详细描述

(1)、将我们编写的程序打成 jar 包 
 
(2)、调用 spark-submit 脚本提交任务到集群上运行 
 
(3)、运行 sparkSubmit 的 main 方法,在这个方法中通过反射的方式创建我们编写的主类的 实例对象,然后调用 main 方法,开始执行我们的代码(注意,我们的 spark 程序中的 driver 就运行在 sparkSubmit 进程中) 
 
(4)、当代码运行到创建 SparkContext 对象时,那就开始初始化 SparkContext 对象了 
 
(5)、在初始化 SparkContext 对象的时候,会创建两个特别重要的对象,分别是:DAGScheduler  和 TaskScheduler 【DAGScheduler 的作用】将 RDD 的依赖切分成一个一个的 stage,然后将 stage 作为 taskSet 提交给 DriverActor 
 
(6)、在构建 TaskScheduler 的同时,会创建两个非常重要的对象,分别是 DriverActor 和 ClientActor 【clientActor 的作用】向 master 注册用户提交的任务  【DriverActor 的作用】接受 executor 的反向注册,将任务提交给 executor 
 
(7)、当 ClientActor 启动后,会将用户提交的任务和相关的参数封装到 ApplicationDescription 对象中,然后提交给 master 进行任务的注册 

(8)、当 master 接受到 clientActor 提交的任务请求时,会将请求参数进行解析,并封装成 Application,然后将其持久化,然后将其加入到任务队列 waitingApps 中 
 
(9)、当轮到我们提交的任务运行时,就开始调用 schedule(),进行任务资源的调度 
 
(10)、master 将调度好的资源封装到 launchExecutor 中发送给指定的 worker 
 
(11)、worker 接受到 Master 发送来的 launchExecutor 时,会将其解压并封装到 ExecutorRunner 中,然后调用这个对象的 start(), 启动 Executor 
 
(12)、Executor 启动后会向 DriverActor 进行反向注册 
 
(13)、driverActor 会发送注册成功的消息给 Executor 
 
(14)、Executor 接受到 DriverActor 注册成功的消息后会创建一个线程池,用于执行 DriverActor 发送过来的 task 任务 
 
(15)、当属于这个任务的所有的 Executor 启动并反向注册成功后,就意味着运行这个任务的 环境已经准备好了,driver 会结束 SparkContext 对象的初始化,也就意味着 new SparkContext 这句代码运行完成 
 
(16)、当初始化 sc 成功后,driver 端就会继续运行我们编写的代码,然后开始创建初始的 RDD, 然后进行一系列转换操作,当遇到一个 action 算子时,也就意味着触发了一个 job 
 
(17)、driver 会将这个 job 提交给 DAGScheduler 
 
(18)、DAGScheduler 将接受到的 job,从最后一个算子向前推导,将 DAG 依据宽依赖划分成 一个一个的 stage,然后将 stage 封装成 taskSet,并将 taskSet 中的 task 提交给 DriverActor 
 
(19)、DriverActor 接受到 DAGScheduler 发送过来的 task,会拿到一个序列化器,对 task 进行 序列化,然后将序列化好的 task 封装到 launchTask 中,然后将 launchTask 发送给指定的 Executor 
 
(20)、Executor 接受到了 DriverActor 发送过来的 launchTask 时,会拿到一个反序列化器,对 launchTask 进行反序列化,封装到 TaskRunner 中,然后从 Executor 这个线程池中获取一个线 程,将反序列化好的任务中的算子作用在 RDD 对应的分区上 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值