spark的核心概念

名词解释

1.ClusterManager:在standalone模式中是Master(主节点),控制整个集群,监控Worker。在YARN模式下是资源管理器。

注意:spark是存储在内存中,不需要管理存储,无论是Master,还是resourcemanager资源管理器,主要都是管理资源的(cpu,内存)。

2.Worker:从节点,负责控制计算节点,启动Executor。在YARN模式中为NodeManager,负责计算节点的控制。

3.Driver:运行Application的main()函数并创建SparkContext(应用程序的入口)。驱动程序,负责向ClusterManager提交作业。和集群的executor进行交互

4.Executor:在worker节点上启动的进程,执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。

5.SparkContext:整个应用的上下文,控制应用的生命周期。

6.RDD:弹性分布式数据集Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph

弹性:既可以在内存,优先在内存存储并计算,如果内存不够,拿磁盘顶上。

数据集:就是一个普通的scala的不可变的集合

分布式:一个完整的RDD数据集,被拆分成多个部分,在不同的机器里面存储。被拆分成的部分称之为该RDD的分区partition,真正存储数据的是partition,RDD不存储数据,RDD就是对这个partition的抽象。又因为RDD是一个scala集合,在scala集合上面有非常多个的算子操作,可以理解为是一个ADT(abstract data type抽象数据类型)

7.DAGScheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中

8.TaskScheduler:将DAGScheduler划分的stage(task的形式)任务,交付executor去干活

9.Stage:一个Spark作业一般包含一到多个Stage。每次提交的是一个stage阶段的任务。

10.Task:一个job会分成多个stage按照shuffle切分,然后每个stage会有多个Task任务,通过多个Task实现并行运行的功能。

11.Transformations:转换(如:map, filter, groupBy, join等),Transformations操作是Lazy的,一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。

12.Actions操作(如:count, collect, save,foreach等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因

13.SparkEnv线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。

MapOutPutTracker负责Shuffle元信息的存储。

BroadcastManager负责广播变量的控制与元信息的存储。

BlockManager负责存储管理、创建和查找块。

14:MetricsSystem监控运行时性能指标信息

15:SparkConf:负责存储配置信息。
spark的核心概念
spark的核心概念

spark的核心概念

1)当spark集群启动以后,worker节点通过心跳机制和master保持通信;
2)SparkContext连接到master以后会向master申请资源,而master会根据worker心跳来分配worker的资源,并启动worker的executor进程;
3)SparkContext将程序代码解析成DAG结构,并提交给DagScheduler;
4) dag会在DagScheduler中分解成很多stage,每个stage包含着多个task;
5) task分配到worker,提交给executor进程,executor进程会创建线程池去执行task,并且向SparkContext报告执行情况,直到task完成;
6) 所有task完成以后,SparkContext向Master注销并释放资源;

Job----> 一个或多个stage一个stage—> 一个或多个task