首页 理论教育 Spark应用程序中的基本概念及调度过程

Spark应用程序中的基本概念及调度过程

时间:2023-06-21 理论教育 版权反馈
【摘要】:Spark应用程序是集群管理器调度的基本单位,一个应用程序对应着一个驱动程序。在6.4节中介绍了RDD数据计算的流程:沿着依赖从后往前递归,直到遇到持久化的数据为止,然后再从前往后计算数据,直到得到动作操作所需求的数据为止。一个Spark应用程序会包含多个作业,但由于这些作业之间相互独立,因此无须对其进行调度,仅考虑一个作业内部的调度过程即可。阶段划分之后,RDD的计算链也被切断。任务集是DAG调度器交付给任务调度器的基本单位。

Spark应用程序中的基本概念及调度过程

(1)应用程序(Application)

每次通过spark-submit命令提交的Jar包,都可以视为一个Spark应用程序。Spark应用程序是集群管理器调度的基本单位,一个应用程序对应着一个驱动程序。

(2)驱动程序(Driver Program)

包含main入口函数并在main函数内实例化SparkContext对象的应用程序称为驱动程序。Driver程序所运行的机器称之为客户端(Client),而客户端可能是Master节点,可能是Worker节点,也可能两者都不是。

(3)Master节点

运行Master守护进程的集群节点,管理着整个集群,一个集群中,Master节点可以有多个,但一次只会有一个处于活跃状态的Master节点,其余属于备用节点。

(4)Worker节点

运行Worker守护线程的集群节点,是集群资源的贡献节点,一个Worker内部包含多个Executor。一个集群中,Worker节点一般会有多个,所有Worker节点统一受Master节点上Master进程的管理。

(5)任务执行器(Executor)(www.xing528.com)

Worker节点上任务执行的地方。一个Worker节点上可能有多个Executor,每个Executor都拥有固定的核心数量和堆栈大小。

(6)作业(Job)

RDD数据的计算是惰性的,在遇到动作操作之前,RDD内部的数据不会真正的被计算。在6.4节中介绍了RDD数据计算的流程:沿着依赖从后往前递归,直到遇到持久化的数据为止,然后再从前往后计算数据,直到得到动作操作所需求的数据为止。这里把这一整个计算流程,称为一个作业。一个Spark应用程序会包含多个作业,但由于这些作业之间相互独立,因此无须对其进行调度,仅考虑一个作业内部的调度过程即可。

(7)阶段(Stage)

RDD的计算具有显著的阶段特征,计算链内从任意一个或者多个连接在一起的RDD到末尾最后一个RDD(一般被称为末RDD,即final RDD)的内部所有分区数据被计算出来时候的状态,都可以将其视为一个阶段,因此一个作业内部的状态划分会有许多种策略,Spark根据Shuffle依赖来划分阶段,后面章节将具体介绍Spark的阶段划分策略。阶段划分之后,RDD的计算链也被切断。

(8)任务集(Task Set)与任务(Task)

每一个阶段内部包含多个可以并发执行的任务,这里把同一个阶段内部的所有任务汇总在一起,称为一个任务集。任务集是DAG调度器交付给任务调度器的基本单位。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈