Worker和Master是Spark獨立集羣裏用到的類。若是是yarn環境部署,是不須要這兩個類的。app
Master是Spark獨立集羣的控制者,Worker是工做者,一個Spark獨立集羣須要啓動一個Master和多個Worker。Spark提供了Master選舉功能,保障Master掛掉的時候能選出另外一個Master,作一個切換的動做,這塊原理和ZooKeeper相似,這裏知道概念就能夠了。spa
Master的功能一是管理Worker的註冊和註銷、狀態變動等,維護集羣的元數據;而是管理Driver的提交運行。繼承
當spark程序運行driver時,會經過StandaloneScheduleBackend來調度分區任務的執行,這時候在StandaloneScheduleBackend裏面會有一個StandaloneAppClient負責與Master通訊,發送RegisterApplication消息給Master,Master將等待運行的app信息記錄下來,等待schedule方法的調度,RegisterApplication裏包含了要執行的Driver的信息(Driver就是咱們的spark程序的main方法要作的事)。部署
Master在進度調度(schedule方法)的時候,而後選擇一個Worker做爲Driver的執行者,這時會發送LaunchDriver消息給Worker,Worker收到後在本地啓動Driver。spark
Master和Worker是機器層面的概念,和Executor、Driver是兩碼事,這點要注意的。ScheduleBackend是處理Driver和Executor之間的消息通訊的。io
CoarseGrainedSchedulerBackend是Driver的SchedulerBackend,是公共部分。獨立集羣的StandaloneSchedulerBackend其實就是繼承了CoarseGrainedSchedulerBackend,共用了與Executor交互的公共代碼,好比LaunchTask消息的處理等。ast
在Executor上運行的是CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend負責接收Driver發送的消息,回覆Driver等。集羣
CoarseGrainedSchedulerBackend發送LaunchTask消息給Executor的CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend收到LaunchTask後調用Executor的launchTask方法來執行Task。原理