Spark 基本概念

来源:互联网 发布:协方差矩阵 对角线 编辑:程序博客网 时间:2024/05/09 12:47

以下内容主要参考自《大数据Spark企业实战》一书(作者:王家林)

1、Application:用户编写的Spark程序,包含Driver和Executor代码。

2、Driver:运行main函数并且创建和关闭SparkContext的程序。

3、Executor:运行在Worker节点上的一个进程,该进程负责运行某些Task,并且负责将数据存放在内存或磁盘中。在Spark On Yarn模式下,其进程名称为CoarseGrainedExecutorBackend。一个CoarseGrainedExecutorBackend进程有且只有一个executor对象,它持有一个线程池,每个线程可以执行一个Task。

4、Cluster Manager:指的是在集群上获取资源的外部服务,目前有三种:

      1) Standalone:Spark原生的资源管理器,由Master负责资源分配。

      2) Apache Mesos:与Hadoop MapReduce兼容性良好的一种资源调度框架。

      3) Hadoop Yarn:主要指Yarn中的ResourceManager。

5、Worker:集群中任何可以运行Application代码的节点。在Standalone模式中指的是通过slave文件配置的Worker节点,在Spark On Yarn模式中指的是NodeManager节点。

6、Task:被送到某个Executor上的工作单元,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理由TaskSchedule负责。

7、Job:包含多个Task组成的并行计算,往往由Spark Action触发产生。一个Application中可能会产生多个Job

8、Stage:每个Job会被拆分成很多组TaskSet,每个TaskSet中有很多Task。TaskSet的名称就是Stage。Stage的划分和调度由DAGScheduler负责。Stage有非最终的Stage(即Shuffle Map Stage)和最终的Stage(即Result Stage)两种。Stage的边界一般就是发生Shuffle的地方。

9、RDD:弹性分布式数据集,它是已被分区、被序列化、不可变的、有容错性的,并且能够被并行操作的数据集,是Spark最基本的计算单元,也是最核心的东西。RDD可以通过一系列算子进行操作,主要有Transformation和Action操作。

10、共享变量:在Spark Application运行时,可能需要一些变量,提供给Task或Driver使用。Spark提供了两种共享变量,一种是可以缓存到各个节点的广播变量,另一种是只支持加法操作,实现求和的累加变量。

11、宽依赖:一个子RDD的分区依赖于父RDD的所有分区。

12、窄依赖:一个父RDD的分区最多只被一个子RDD的分区所引用。

13、DAGScheduler:DAGScheduler接收用户提交的job,并将job划分为不同的Stage(划分Stage的依据是RDD之间的依赖关系),并在每一个Stage上产生一系列Task,将Stage提交给TaskScheduler。

14、TaskScheduler:将TaskSet(Stage)提交给Worker集群运行,每个Executor运行什么Task就在此处分配的。TaskScheduler负责具体启动任务、监控和汇报task运行情况。TaskScheduler是一个trait,它的实现主要用于与DAGScheduler交互,负责任务的具体调度和运行,其核心接口是submitTasks和cancelTasks。

16、SchedulerBacked:SchedulerBacked也是一个trait.它的实现与底层资源调度系统(如Mesos,Yarn)进行交互,配合TaskScheduler实现具体任务执行所需的资源分配。核心接口是receiveOffers







0 0
原创粉丝点击