spark种的名词解释

本文详细介绍了Apache Spark的架构组件,包括Application、Driver、Executor等关键概念,以及它们在Spark集群中的角色和职责。此外还深入探讨了Task、Job、Stage的执行流程,并解释了DAGScheduler和TaskScheduler的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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就是在此处分配的。


---来源于互联网








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值