Spark运行模式

一:Spark 运行架构介绍

  相关术语概念详解:

    Application:指的是用户编写的Spark应用程序,包含了一个Driver功能的代码和分布在集群中多节点上运行的Executor代码。

    Driver:Spark中的Driver就是运行Application的main()函数,并且创建SparkContext。SparkContext为Spark准备运行环境,它负责和ClusterManager通信,进行资源的申请、任务的分配和监控,当Executor部分运行完毕后,负责将SparkContext关闭。

    Worker:集群中运行Application代码的节点。可以理解为服务器。

    Executor:Application运行在work节点上的一个进程,该进程负责运行task。(理解work节点上的一个进程,来执行Driver的任务task)

    ClusterManager:在集群上获取资源的外部服务。

    Job(作业):包含多个task组成的并行计算。rdd包括转换和运行Action,只要有一个Action就是一个Job。

    Stag(阶段):每个Job会被拆分成多组task。

    Task(任务):最终被推送的到Executor进程上的任务。

  Spark基本任务流程图

    

Spark 限制job数_运行环境

    1:构建Spark Application的运行环境 ,启动sparkContext,sc注册并申请Executor

    2:资源管理器分配Executor资源并启动 ****ExecutorBackend,Executor运行状态随着心跳发送到资源管理器

    3:SC开始构建DAG(有向无环图),DAG开始分解成stage,并且有TaskSet发送给Task Scheduler 。Executor想SC申请Task。

    DAGSchuduler

把一个Spark作业换成Stage的DAG,根据RDD和Stage之间的关系找出开销最小的调度方法,然后把Stage以TaskSet的形式提交给TaskScheduler。

    TaskScheduler

维护所有的TaskSet,当Executor向Driver发送心跳时,TaskScheduler会根据其资源剩余情况分配相应的Task。

 

Spark 限制job数_Spark 限制job数_02

        上图是读取一个文件,spark解析为,一个Job,两个stage ,name下有33个文件,那么就有66个文件,这样就有66个task。