Driver program:
运行应用程序的main函数并创建SparkContext的进程
除了RDD的最终执行所写的业务逻辑,剩下的都在Driver里生成,Driver端执行action算子才会到开始执行所创建的DAG-RDD图。
Cluster manager:
用于获取集群资源外部服务
Master:
进程,负责整个集群的调度、分配、监控等职责
Worker node:
进程,负责存储RDD的某个或某些Partition,启动其他进程或线程,对RDD的partition处理和计算
Executor:
进程,运行任务,并将数据保存在内存或磁盘存储区中
Driver端产生Task进行序列化通过网络传输给Executor,Executor进行反序列化后让进线程池中执行Task
Job
Spark中每个action对应着一个Job,transformation不是Job。
Task:
线程,对RDD的partition进行并行计算
一个Job被拆分成若干个Stage,每个Stage执行一些计算,产生一些中间结果。它们的目的是最终生成这个Job的计算结果。而每个Stage是一个taskSet,包含若干个task。Task是Spark中最小的工作单元,在一个executor上完成一个特定的事情,Executor的每个core每次只能执行一个task。
Stage:
每个作业被划分为更小的任务集,称为相互依赖的阶段(类似于map reduce中的map和reduce阶段)
Stage个数:1+shuffle依赖的数量(resultStage+shuffleMapStage):反向推导,每进行一次宽依赖(也就是每进行一个shuffle)前面的RDD就被分到一个Stage里。
例:下面进行了两个宽依赖(两次shuffle)