yarn cluster模式提交spark任务
(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程。
(2)SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法。
(3)YarnClusterApplication创建Yarn客户端,然后向yarn服务器发送执行指令:bin/java ApplicationMaster。
(4)Yarn(Resource Manager)收到指令后会在指定的NameNode中启动Spark的ApplicationMaster。
(5)ApplicationMaster启动Driver线程,执行用户的作业。
(6)ApplicationMaster向ResourceManager注册,申请资源。
(7)ResourceManager启动NameNode,NameNode向ApplicationMaster注册。
(8)ApplicationMaster向NameNode发送指令,bin/java YarnCoarseGrainedExecutorBackend。启动Executor后端进程。
(9)CoarseGrainedExecutorExecutorBackend进程会和driver通信,启动计算对象Executor等待接收任务,注册已经启动的Executor。
(10)driver线程继续执行完成作业的调度和分配,自身任务的执行和监控任务的执行。
注:SparkSubmit是运行在提交命令的服务器,和ApplicationMaster和CoarseGrainedExecutorBackend是独立的进程。
Driver是运行在ApplicationMaster上的线程。Executor和YarnClusterApplication是对象。
参考:尚硅谷《Spark内核文档》。