问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Spark架构及运行流程详解

创作时间:
2025-03-21 11:31:32
作者:
@小白创作中心

Spark架构及运行流程详解

引用
CSDN
1.
https://blog.csdn.net/qq_14815605/article/details/144245024

Spark是一种广泛使用的分布式计算框架,其架构设计和运行流程对于理解大数据处理和分析至关重要。本文将详细介绍Spark的核心组件及其运行机制。

Spark架构图

  1. Driver
  • 解析用户的应用程序代码,转化为作业(job)。
  • 创建SparkContext上下文对象,其负责与资源管理器(ClusterManager)通信,进行资源的申请、任务的分配和监控等。
  • 跟踪Executor的执行情况。
  • 可通过UI界面查询运行情况。
  1. Cluster Manager
  • Cluster Manager负责管理集群资源的分配。常用的Cluster Manager有Standalone模式、YARN和Mesos。
  • 它负责从集群中的节点上获取计算资源并监控资源使用情况。
  1. Executors
  • Executors是实际执行任务的工作进程,运行在集群节点上。
  • 每个Executor负责执行任务并存储数据。
  • 向Driver节点注册并反馈任务执行状态。
  1. Tasks
  • 运行在Executor上的最小计算单元。

Spark运行流程图

当执行一个Spark Application时,整个过程如下:

  1. Driver初始化
  • 应用程序的main函数由Driver执行,Driver创建一个SparkContext。
  • SparkContext负责与集群管理器通信,申请资源并协调任务的分配和监控。
  1. 资源申请与Executor启动
  • SparkContext向集群管理器注册并申请资源,具体来说,申请运行Executor的计算资源。
  • 集群管理器根据资源情况为Executor分配资源,并启动相应的Executor进程。
  • 启动的Executor会定期向集群管理器汇报自己的运行状态。
  1. DAG图构建与任务调度
  • SparkContext根据程序中的RDD依赖关系构建一个DAG(有向无环图)图。
  • DAG图提交给DAGScheduler进行解析,DAGScheduler将图分解成多个Stage。
  • 每个Stage由多个任务组成,这些任务被打包成TaskSet,然后提交给TaskScheduler进行调度。
  1. 任务执行与结果返回
  • TaskScheduler将任务分发到Executor执行,同时SparkContext将应用程序代码发送给Executor。
  • 任务执行结束后,Executor将计算结果返回给Driver,或将结果写入HDFS、数据库等外部存储。
  • 运行完毕后释放所有资源。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号