Spark 核心概念图:
Driver:是一个spark 作业运行的启动的一个Driver进程,作业的主进程,负责作业解析、生成stage,并调度Task到Executor上。
SparkContext: 程序运行的核心,有DAGScheduler 划分每个阶段,底层TaskScheduler 划分给个阶段的具体任务。SchedulerBackend 管理整个集群中为正在运行的程序分配的计算资源Executor。
Executor: 真正执行作业的地方,Executor 分布在集群中的worker上,每个Executor负责接收Driver的命令来加载和运行Task。一个Executor 可以执行多个Task。
DAGScheduler: 负责高层调度,划分stage并生成程序运行的有向无环图。
TaskScheduler:负责具体stage的内部调度,具体Task的调度、容错等。
Job:Top-level 的工作单位,每个action 算子都会触发一次job,一个job可能包含一个或者多个stage。
Stage: 分为ShuffleMapStage 和 ResultStage ,除了最后一个stage 是ResultStage外,其他都是ShuffleMapStage。
Task: 任务执行的最小单位,Task 会发送到一个节点上,一个Task 对应RDD的一个partition。
RDD:不可变、Lazy级别、粗粒度。
---
RDD 五大特性:
* Internally, each RDD is characterized by five main properties:
*
* - A list of partitions
* - A function for computing each split
* - A list of dependencies on other RDDs
* - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
* - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
* an HDFS file)
DataSet 和 DataFrame
DataSet: 是懒加载的,只有在行动算子(Action)执行的,才会进行计算。
DataFrame是DataSet[Row] 的别名。