详细步骤:
1.提交的jar包
2.spark-submit提交到集群上运行
3.在提交的机器上,运行sparkSubmit的main方法(通过反射的方式创建我们编写主类的实例对象,调用main方法,执行代码)
4.当代码到SparkContext,开始初始化SparkContxt
5.初始化SparkContext,创建DAGscheduler,TaskScheduler
6、当TaskSchedule启动后,会将用户提交的任务和相关的参数,提交给master进行任务的注册
7、当master接受到任务请求时,会将请求参数进行解析,并封装成Application,然后将其持久化,然后将其加入到任务队列waitingApps中
8、当轮到我们提交的任务运行时,就开始调用schedule(),进行任务资源的调度
9、master将调度好的资源封装到launchExecutor中发送给指定的worker
10、worker接受到Maseter发送来的launchExecutor时,会将其解压并封装到ExecutorRunner中,然后调用这个对象的start(), 启动Executor
11、Executor启动后会向DriverActor进行反向注册
12、TaskScheduler发送注册成功的消息给Executor
13、Executor接受到注册成功的消息后会创建一个线程池,用于执行TaskScheduler发送过来的task任务