1.Application
Appliction的概念和hadoop MR中的有些相似,都是指用户编写的Spark应用程序,其中包括一个
Driver功能的代码和分布在集群中多个节点上运行的
Executor代码。
2.Driver
使用Driver这一个概念的分布式框架很多,比如hive等,Spark中的Driver即运行上
述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中
有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭,通常用SparkContext代表Driver。
3.Executor
某个Application运行在
worker节点上的一个进程,
该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上,每个Application都有各自独立的一批Executor, 在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutor Backend,类似与hadoop MR中的YarnChild。一个CoarseGrainedExecutor Backend有且仅有一个Executor对象,
负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个CoarseGrainedExecutor Backend能并行运行Task的数量取决与分配给它的cpu个数。
4.Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型。
[1].Standalon : spark原生的资源管理,由Master负责资源的分配,可以在EC2上运行
[2].Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架。
[3].Hadoop Yarn: 主要是指Yarn中的ResourceManager。
5.Worker
集群中任何可以运行Application代码的节点,类似与Yarn中的NodeManager节点, 在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark on Yarn模式下就是NoteManager节点。
6.Task
被送到某个Executor上的工作单元,但hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责。
7.Job
包含多个Task组成的并行计算,往往由Spark Action触发生成, 一个Application中往往会产生多个Job。
8.Stage
每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage,Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方。
9.RDD
Spark的基本计算单元,可以通过一系列算子进行计算(主要由Transformation和Action操作),同时RDD是Spark最核心的东东,他表示已被分区、被序列化的、不可变的、有容错的并且能够被并行操作的数据集合。其存储级别可以是内存,也可以是磁盘,可通过spark.storage.StoragerLevel属性来配置。
10.共享变量
在Spark Application运行期间,可能需要一些共享变量, 提供给Task或Driver使用,Spark提供了两种共享变量,一个可以缓存到各个节点的
广播变量;另一种是只支持
加法操作,可以实现求和的累加变量。
11.宽依赖
或称为为ShuffleDependency,与Hadoop MR的Shuffle的数据依赖相似,宽依赖需要计算所有父RDD对应分区的数据,然后在节点之间进行shuffle。
12.窄依赖
或称为NarrowDependency, 某个具体的RDD,其分区partition a最多子Rdd中一个分区partition b依赖,此种情况只有Map任务, 是不需要发送shuffle过程的, 窄依赖又分为1:1和N:1两种。
13.DAGScheduler
根据Job构建基于Stage的DAG,并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系。
14.TASKSedulter
将TaskSET提交给worker运行,每个Executor运行什么Task就是在此处分配的。
---来源于互联网