SparkContext的初始化机制
1. createTaskScheduler():创建SparkScheduler,SparkDeploySchedulerBackend(它在底层负责接收TaskSchedulerImpl的控制,实际上负责与Master的注册,Executor的反注册,task发送到Executor等操作),调用TaskSchedulerImpl的init()方法,创建SchedulePool,它有不同的优先策略,如FIFO。
2. 调用TaskSchedulerImpl的start()方法,在方法中会调用SparkDeploySchedulerBackend的start()方法,在方法中会创建AppClient,AppClient会创建一个ClientActor,ClientActor调用registerMaster()方法,在该方法中会调用tryRegisterAllMaster()。
3. 向Master发送RegisterApplication(case class,里面封装了Application的信息)。
4. 找到Worker,启动Executor。
5. 反向注册到SparkDeploySchedulerBackend上面。