spark的yarn模式下的client提交步骤
1.在client启动driver进程,初始化作业,解析程序,初始化两个调度器DAGScheduler和TasksScheduler
--初始化作业:用来判断路径是否正确,权限校验等
--DAGSchefuler会把程序解析成DAG有向无环图,在又宽算子依赖划分stage,
每个stage中又会划分tasks,在把task调度给TaskScheduler
--TaskSchedular 把Tasks池中的task分配给executor来执行
2.Driver会向resourceManage申请资源,启动一个AppMaster进程
3.ResourceManage会分配一个节点来运行AppMaster,由NodeManage真正分配资源运行AppMaster
4.AppMaster会向ResourceManage申请整个程序所需要运行的其他资源,准备启动executor
5.在各个节点上运行的executor会向Driver反向注册,要求分配任务
6.TaskScheduler将task分配到各个executor上,并实时监控executor的运行状态,executor开始执行任务
7.TaskScheduler收到executor执行完成的信息,表示整个运行程序完成,会向resourceManage申请释放资源
spark的yarn模式下的cluster模式
1.Client首相会向ResourceManage申请资源,要求启动AppMaster
2.ResourceManage会分配一个节点,由NodeManage来运行AppMaster,并在AppMaster所在的节点运行Driver进程
3.Driver进程是用来初始化作业,解析程序的,并初始化出两个调度器:DAGScheduler和TaskScheduler
--初始化作业:时间文件路劲的验证,以及权限的校验
--DAGScheduler:将程序解析成DAG(有向无环图),在由DAG里面的宽依赖算子来进行stage的划分,在确定stage里面的task,并将task调度给TaskScehduler
--TaskScheduler:将task池中的task分配给各个executor执行,实时监控executor的执行状态
4.各个节点上面的executor会向resourceManage反向 注册,申请分配任务
5.TaskScheduler将task分配到各个executor上执行,并实时监控executor的执行状态
6.TaskScheduler收到最后一个executor执行成功的信息,表示整个应用程序完成,就会向ResouceManage申请释放资源