Worker和Master

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。原理

相關文章
相關標籤/搜索