-
执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程;SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法,YarnClusterApplication创建Yarn客户端,然后向Yarn服务器发送执行指令:bin/java ApplicationMaster;
-
Yarn框架收到指令后会在指定的NM中启动ApplicationMaster;
-
ApplicationMaster启动Driver线程,执行用户的作业;
-
AM向RM注册,申请资源;
-
RM返回资源可用列表
-
获取资源后AM向NM发送指令:bin/java YarnCoarseGrainedExecutorBackend;
-
CoarseGrainedExecutorBackend进程会接收消息,跟Driver通信,注册已经启动的Executor;然后启动计算对象Executor等待接收任务
-
Driver线程继续执行完成作业的调度和任务的执行。
-
Driver分配任务并监控任务的执行。
注意:SparkSubmit、ApplicationMaster和CoarseGrainedExecutorBackend是独立的进程;Driver是独立的线程;Executor和YarnClusterApplication是对象。