首先从SparkContext中TaskScheduler实例的创建开始:
进入taskScheduler.start()方法内部:
进入其实现者TaskSchedulerImpl内部:
可以发现在start具体实现的内部首先是有个backend.start方法:
其终究具体的实现类为:
从代码中可以看出,我们把CoarseGrainedExecutorBackend封装成command,然后交给appDesc,接着交给了Appclient,此时的AppClient就是客户端程序!
AppClient会调用start方法:
此时启动了ClientActor:
关于AppClient的代码,在我之前的博客文章已分析了,此处俺就不分析了
下1篇要分析registerWithMaster() 和 tryRegisterAllMasters()方法