文字说明:
1. shell脚本提交任务
2. SparkSubmit 通过反射获取Client类里面的main方法并执行
3. 客户端封装并发送指令 到 Yarn的ResourceManager
4. RM选择一台NodeManager启动ApplicationMaster
5. AM启动Driver线程 来执行用户的程序作业
6. AM向RM申请资源
7. AM封装并发送指令到 Executor 所在的节点上
8. 启动ExecutorBackend 并在其内部创建Executor对象
9. Executor 向 Driver注册
10. Driver 给 Executor 分配任务
注意: Driver端做了
1. 执行代码
2. 初始化 SparkContext
3. 任务的切分,分配任务
画图说明: