标签:关系 创建 发送 exec 任务 代码 阶段 之间 text
Spark运行基本流程
(1)当一个 Spark Application 被提交时,首先需要为这个应用构建起基本的运行环境, 即由 Driver 创建一个 SparkContext进行资源的申请、任务的分配和监控。
SparkContext 会向资源管理器注册并申 请运行 Executor 的资源;
(2)资源管理器为 Executor 分配资源,并启动 Executor 进程,
Executor 启动以后会不断向资源管理器汇报其运行情况
(3)SparkContext 根据 RDD 的依赖关系构建 DAG 图,DAG 图提交给 DAGScheduler 进行解析,将 DAG 图分解成 Stage,并且计算出各个 Stage 之间的依赖关系,(每一个Stage阶段里面都会包含多个task,这些task构成一个taskset)然后把一个个 TaskSet 提交给底层任务调度器 TaskScheduler 进行处理;
(TaskScheduler拿到taskset以后要把任务分配给相关的Executor 进程去运行这些task,但是它不能随便分配 必须接到Executor申请才会分配)
Executor 会向 SparkContext 申请 Task,Task Scheduler将相关Task发送给Executor运行,同时,SparkContext也会将应用程序代码发放给Executor;
(4)Task 在 Executor 上运行,把执行结果反馈给 TaskScheduler,然后反馈给 DAGScheduler,运行完毕后写入数据并释放所有资源。
标签:关系 创建 发送 exec 任务 代码 阶段 之间 text
原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/12249458.html