首先從SparkContext中TaskScheduler實例的創建開始:
進入taskScheduler.start()方法內部:
進入其實現者TaskSchedulerImpl內部:
可以發現在start具體實現的內部首先是有個backend.start方法:
其終究具體的實現類為:
從代碼中可以看出,我們把CoarseGrainedExecutorBackend封裝成command,然后交給appDesc,接著交給了Appclient,此時的AppClient就是客戶端程序!
AppClient會調用start方法:
此時啟動了ClientActor:
關于AppClient的代碼,在我之前的博客文章已分析了,此處俺就不分析了
下1篇要分析registerWithMaster() 和 tryRegisterAllMasters()方法