spark-stage任务划分、sparkclient运行模式
sparkclient运行模式
- 代码块的提交、sparkshell的执行
- sparksubmit在AM下启动master执行Driver对任务进行划分和切片、初始化sparkcontext,
- Driver向RM申请启动一台机器并启动EL,RM会选择一台机器并启动EL(EL执行的仍然是AM中的main方法,然后EL会继续申请资源。
- 获取资源后EL会向资源机器发送启动EB,并创建Executor对象的指令,指令发送成功之后向RM回复,RM并将这一信息返回给Driver,
- Driver获取信息后,向Executor分配任务。
##stage任务划分(在Driver端进行)
- Application是每初始化一个Sparkcontext都会产生一个。job是根据行动算子的个数来决定,每一个行动算子产生一个job。stage个数是根据宽依赖的个数加1。Task是由每一个stage最后一个RDD分区来决定。
- 任务开始是在遇到行动算子之后才开始然后逐步向前推进先寻找宽依赖个数来判断stage的个数。
- 然后再通过TaskSheduler通过Taskset获取job中所有的task,然后序列化再发往Executor。