spark-submit提交任务时执行流程(简单版)
1. yarn cluster模式提交spark任务
(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程。
(2)SparkSubmit类中的main方法反射调用YarnClusterApplication的start方法【在spark3.4.3中是start方法】。
(3)YarnClusterApplication创建Yarn客户端,然后向yarn服务器发送执行指令:bin/java ApplicationMaster。
(4)Yarn(Resource Manager)收到指令后会在指定的NodeManager中启动Spark的ApplicationMaster。
(5)ApplicationMaster启动Driver线程,执行用户的作业。
(6)ApplicationMaster向ResourceManager注册,申请资源。
(7)ResourceManager启动NodeManager,NodeManager向ApplicationMaster注册。
(8)ApplicationMaster向NameNode发送指令,bin/java YarnCoarseGrainedExecutorBackend。启动Executor后端进程。
(9)CoarseGrainedExecutorExecutorBackend进程会和driver通信,启动计算对象Executor等待接收任务,注册已经启动的Executor。
(10)driver线程继续执行完成作业的调度和分配,自身任务的执行和监控任务的执行。
注:SparkSubmit是运行在提交命令的服务器,和ApplicationMaster和CoarseGrainedExecutorBackend是独立的进程。
Driver是运行在ApplicationMaster上的线程。Executor和YarnClusterApplication是对象。(有的资料说driver是进程,我还得再确认下!)
2. yarn client模式提交spark任务
(有待进一步修正)
(1)执行脚本提交任务,实际是启用一个SparkSubmit的JVM进程。
(2)SparkSubmit类中的main方法反射调用用户diamagnetic的main方法。
(3)启动driver线程,执行用户的作业,并创建scheduleBackend。
(4)YarnClientScheduleBackend向RM发送指令,bin/java Executorlauncher。
(5)Yarn的RM收到指令后会在指定的NM中启动ExecutorLauncher(调用ApplicationMaster)
(6)ApplicationMaster向ResourceManager注册,申请用户作业所需的资源。
(7)获取资源后ApplicationMaster向NameNode发送指令,bin/java CoarseGrainedExecutorBackend。
(8)CoarseGrainedExecutorBackend进程会接收消息,与Driver通信,注册已经启动的Executor,然后启动Executor等待接收计算任务。
(9)Driver分配任务,执行任务,并监控任务的执行。
这里感觉还是描述不清楚,再修改。
参考:尚硅谷《Spark内核文档》。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!