1,driver启动以后会先构建SparkContext,基于常用的standealone创建taskscheduler
2,TaskSchedulerImpl
* 底层通过操作一个schedulerBackend,针对不同种类的cluster(standalone,yarn,mesos),调度task
* 他也可以使用一个localBackend,并将isLocal参数设为true,来在本地模式下工作
* 它负责处理一些通用的逻辑,比如多个job的调度
* 客户端首先调用他的initialize()方法和start()方法,然后通过runTasks()方法提交taskSets
start方法会创建一个client对象负责application与spark集群通信
3,然后创建了DAGscheduler,然后划分stage,提交job