spark2.4.3(一)提交作业的整体流程

本文主要内容:

  • spark standalone模式的 job执行流程;
  • sparkContext主要作用;
  • Master选主原理;
  • Master主备切换原理等

作业提交和执行流程

以standalone模式为例的基本流程:

  1. spark-submit 提交代码,执行 new SparkContext(),在 SparkContext 里构造 DAGScheduler 和 TaskScheduler。
  2. TaskScheduler 会通过后台的一个进程,连接 Master,向 Master 注册 Application。
  3. Master 接收到 Application 请求后,会使用相应的资源调度算法,在 Worker 上为这个 Application 启动多个 Executer。
  4. Executor 启动后,会自己反向注册到 TaskScheduler 中。 所有 Executor 都注册到 Driver 上之后,SparkContext 结束初始化,接下来往下执行我们自己的代码。
  5. 每执行到一个 Action,就会创建一个 Job。Job 会提交给 DAGScheduler。
  6. DAGScheduler 会将 Job划分为多个 stage,然后每个 stage 创建一个 TaskSet。
  7. TaskScheduler 会把每一个 TaskSet 里的 Task,提交到 Executor 上执行。
  8. Executor 上有线程池,每接收到一个 Task,就用 TaskRunner 封装,然后从线程池里取出一个线程执行这个 task。(TaskRunner 将我们编写的代码,拷贝,反序列化,执行 Task,每个 Task 执行 RDD 里的一个 partition)

下面再赘述一遍哈哈:

spark-submit shell提交Application,提交到Driver进程。Spark使用DriverWrapper启动用户APP的main函数,如图。

Master Worker SparkSubmit Driver StandaloneAppClien 集群启动,Master/Worker 启动 发送registerWorker消息 HeartBeat loop [ HB timeout / 4 ms ] handleSubmit() RequestSubmitDriver(driverDescription)消息 【1】创建出Driver, 开启调度 创建出Driver对象 RegisterApplication消息,请求提交App RegisteredApplication 记录app信息,执行 调度,挨个启动wai tingDrivers 【2】 LaunchDriver消息 在线程中启动Driver进程 prepareAndRunDriver()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值