先介绍几个基本概念:
1、Driver
运行Application的main()函数并且创建SparkContext的程序。
2、Master
Master是个进程主要负责资源的调度和分配,还有集群监控等职责。
3、Worker
Worker是个进程,主要职责有两个,一个是用自己的内存存储一个或多个RDD Partition,另一个启动Executor进程以及task线程,对RDD Partition进行处理和计算。
4、Executor
Executor进程主要负责对RDDPartition进行处理和计算任务,并且负责将数据存储在硬盘或者内存中。
5、Task
Task 是线程,它属于Executor的执行单元。
6、Job
Job包含多个task的并行计算,spark中的一个action对应一个job,如collect、count、saveAsTextFile ,用户提交的Job会提交给DAGScheduler,Job会被分解成StageDAG。
7、Stage
每个Job会被拆分成多组任务,每组任务被称为一个Stage,称为TaskSet。
8、RDD Partition
RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据, RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。
Spark 应用程序
资源申请过程

图表 1 Driver向Master申请资源
Spark 应用程序
资源执行过程

图表 2 Driver进程处理计算任务过程

