- 启动脚本提交任务,实际上是启动一个SparkSubmit的JVM进程。
- SparkSubmit通过反射调用YarnClusterApplication的main方法。
- YarnClusterApplication创建YarnClient,YarnClient向RM发送指令:bin/java ApplicationMaster,要求开启AM。
- RM在接收到指令后会选择一个合适的NM,在这个NM中启动ApplicationMaster。
- AM启动Driver线程执行用户的作业。
- AM向RM申请资源,并返回资源列表。
- AM向对应的NM发送指令:bin/java CoarseGrainedExecutorBackend;
- NM启动EB并在EB中创建Executor对象。
- Executor向Driver注册,等待接收任务。
- Driver分配任务并监控任务的执行。
注意:SparkSubmit、ApplicationMaster 和 CoarseGrainedExecutorBackend 是独立的进程;Driver是独立的线程;Executor 和 YarnClusterApplication 是对象。