Driver + Executor
Driver:运行SparkContext上下文的地方(jvm),SparkContext进行初始化的地方(jvm),进行RDD初始化的地方(jvm),Task运行资源申请和RDD job/Task调度的调度
一般我们认为main方法的位置就是driver(main方法是SparkContext的构建)
一个应用只有一个driver
Executor:
具体task运行的地方,一个executor可以运行多个task任务,一个应用可以有多个Executor
进程方面问题:
local模式:
driver 和 executor运行在同一个进程中 SparkSubmit,以线程的方式来区分
standalone:
driver:
在sparksubmit进程上
executor:
CoarseGrainedExecutorBackend
注意:spark-submit脚本的一次执行就是一个spark应用(spark-shelld底层就是spark-submit)
一个应用可以包含多个job(>=0)
一个job里面可以包含多个stage(>0)
一个stage可以包含多个task(>0)
task就是最小的运行单位,是在executor处理对应分区数据的线程
task的数量和rdd的分区数是一致的
Driver:运行SparkContext上下文的地方(jvm),SparkContext进行初始化的地方(jvm),进行RDD初始化的地方(jvm),Task运行资源申请和RDD job/Task调度的调度
一般我们认为main方法的位置就是driver(main方法是SparkContext的构建)
一个应用只有一个driver
Executor:
具体task运行的地方,一个executor可以运行多个task任务,一个应用可以有多个Executor
进程方面问题:
local模式:
driver 和 executor运行在同一个进程中 SparkSubmit,以线程的方式来区分
standalone:
driver:
在sparksubmit进程上
executor:
CoarseGrainedExecutorBackend
注意:spark-submit脚本的一次执行就是一个spark应用(spark-shelld底层就是spark-submit)
一个应用可以包含多个job(>=0)
一个job里面可以包含多个stage(>0)
一个stage可以包含多个task(>0)
task就是最小的运行单位,是在executor处理对应分区数据的线程
task的数量和rdd的分区数是一致的