Spark从入门到精通5 -- Spark运行架构及流程

本文深入解析Spark的运行架构,包括Application、Driver、Executor、DAG、Task、Job和Stage等核心概念,以及Spark的运行流程,从提交应用到执行任务直至销毁SparkContext的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark运行架构及流程

Spark运行架构
架构图

在这里插入图片描述

基本概念
  • Application:用户编写的Spark应用程序,一个main方法。
  • Driver:程序中执行main方法的进程,创建SparkContextSpark应用程序提供运行环境,负责与ClusterManager的通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。
  • Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
  • DAG:有向无环图,反映RDD之间的依赖关系。
  • Task:运行在Executor上的工作单元。
  • Job:一个Job包含多个RDD,一般一个action为一个job
  • Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。
关系解释
  一个Application由一个Driver和若干个Job构成
  一个Action为一个Job
  一个Job由多个Stage构成
  一个Job由是否有宽依赖分为多个Stage
  一个Stage由多个没有Shuffle关系的Task组成
  一个Task根据RDD分区并行运行在多个分区上

Executor有两个优点:

  • 利用多线程来执行具体的任务减少任务的启动开销;

  • Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销;

Spark运行流程
流程图
Driver资源管理器Executor启动Application创建SparkContext申请资源(基于SparkConf)启动执行器节点汇报执行器节点状态(heart)构建DAG图基于DAG Schedule分解Stage基于Task Schedule提交任务执行任务(若有返回值返回结果)执行结束销毁SparkContextDriver资源管理器ExecutorSpark运行流程
1、用户通过spark-submit脚本提交应用
2、spark-submit脚本启动驱动器程序,调用用户定义的main方法
3、驱动器程序与集群管理器通信,申请资源启动执行器节点
4、集群管理器为驱动器程序启动执行器节点
5、驱动器进程执行用户应用中的操作,根据程序中定义的对RDD的转化操作和行动操作、驱动器节点把工作以任务形式发送到执行器节点。
6、任务在执行器程序中进行计算并保存结果
7、如果程序的main方法退出或者调用了SparkContext.stop(),驱动器程序会终止执行器进程,并且通过集群管理器释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值