spark job提交执行流程

Posted 一加六

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark job提交执行流程相关的知识,希望对你有一定的参考价值。

standalone

集群启动后worker向master注册信息,
通过spark-submit提交任务时,在任务提交节点或Client启动driver,
在driver创建并初始化sparkContext对象,包含DAGScheduler和TaskScheduler,TaskScheduler与Master节点通讯申请注册Application,Master节点接收到Application的注册请求后,通过资源调度算法,在自己的集群的worker上启动Executor进程;启动的Executor也会反向注册到TaskScheduler上
DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的形式发送个TaskScheduler;
所有task运行完成后,SparkContext向Master注销,释放资源;

参考文章

spark on yarn

client


SparkContext在Client创建并实例化
1.client向ResouceManager申请启动ApplicationMaster,同时在SparkContext初始化中创建DAGScheduler和TaskScheduler

2.ResouceManager收到请求后,在一台NodeManager中启动第一个Container运行ApplicationMaster

3.Dirver中的SparkContext初始化完成后与ApplicationMaster建立通讯,ApplicationMaster向ResourceManager申请Application的资源

4.一旦ApplicationMaster申请到资源,便与之对应的NodeManager通讯,启动Executor,并把Executor信息反向注册给Dirver

5.Dirver分发task,并监控Executor的运行状态,负责重试失败的task

6.运行完成后,Client的SparkContext向ResourceManager申请注销并关闭自己

Cluster

1.client向ResouceManager申请启动ApplicationMaster,同时在SparkContext初始化中创建DAGScheduler和TaskScheduler

2.ResouceManager收到请求后,在一台NodeManager中启动第一个Container运行ApplicationMaster

3.Dirver中的SparkContext初始化完成后与ApplicationMaster建立通讯,ApplicationMaster向ResourceManager申请Application的资源

4.一旦ApplicationMaster申请到资源,便与之对应的NodeManager通讯,启动Executor,并把Executor信息反向注册给Dirver

5.Dirver分发task,并监控Executor的运行状态,负责重试失败的task

6.运行完成后,Client的SparkContext向ResourceManager申请注销并关闭自己

Yarn-client和Yarn-cluster的区别:

yarn-cluster模式下,Dirver运行在ApplicationMaster中,负责申请资源并监控task运行状态和重试失败的task,当用户提交了作业之后就可以关掉client,作业会继续在yarn中运行;

yarn-client模式下,Dirver运行在本地客户端,client不能离开。

以上是关于spark job提交执行流程的主要内容,如果未能解决你的问题,请参考以下文章

spark job提交执行流程

spark job提交执行流程

spark:spark架构及物理执行图

Spark Streaming运行流程及源码解析

spark入门知识和job任务提交流程

大数据之Spark:Spark 底层执行原理