微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spark执行流程

image-20211031210640552

首先,用户编写好的 spark 应用程序之后,打包成 Jar 包,通过 spark-submit 进行提交。最终转交给 SparkSubmit.class,通过提交模式可以找到对应的客户端启动类。这个客户端类启动好了之后,执行一些参数解析,执行 Jar 包处理等相关准备动作之后,就发送请求(ApplicationRegistion)给对应的资源调度系统的节点 Master。Master 首先找到一个空闲节点,来启动一个 Driver(Master 发送消息 LauchDriver 给 Worker),启动 Driver (启动 Driver 之后,启动这个 Job 需要的 Executor),解析和执行用户编写的应用程序 main 方法。首先执行的是 SparkContext 的初始化。然后执行各种操作算子,构建 DAG,最后触发 Action 提交到 Job。

  1. 应用程序在 Driver 端执行
  2. Driver 中执行应用程序,首先初始化 SparkContext
  3. 初始化 SparkContext ,会初始化三大组件 DAGScheduler,TaskScheduler,SchedulerBackEnd
  4. 在初始化 ScheduleBackEnd 时,会初始化两个通信组件 ClientEndpoint 和 DriverEndpoint
    • ClientEndpoint 和 Master 打交道,负责任务提交和 Driver 状态汇报
    • DriverEndpoint 和 Worker 中的 Executor 打交道,负责任务派发和跟踪 Task 执行状态
    • @H_502_20@
    • DriverEndpoint 会发送 LaunchTask 命令给 ExecutorBackEnd
    • ExecutorBackEnd 接收到命令之后,会调用 launchTask 方法来启动任务,其实就是封装一个 TaskRunner 的线程对象,提交给 Executor 的线程池来执行
    • 整个过程,Executor 都会维持与 Driver 的心跳,整个过程中,Driver 也会维持和 Master 的心跳

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐