咱們都知道,寫好spark程序後,能夠經過命令行spark-submit方式提交到集羣,那麼這個具體的過程是怎麼搞得呢?安全
spark有多種集羣方式,如yarn,standalone等。提交方式又分爲client和cluster等模式,這裏就先拿standalone的client方式舉例。app
standalone方式下,spark集羣有一個master和多個worker組成集羣,如今spark又支持HA方式的熱備,保障master安全,這塊咱們就不談了,知道這個概念就好了。spa
spark-submit classMain xx.jar -master spark://127.0.0.1:8088 ,相似這樣的命令提交jar包後,spark-submit先啓動要給Client程序,而後這個Client程序將spark程序(classMain)打包成DriverDescription,並放在SubmitDriver消息體內提交給Master。命令行
Master收到SubmitDriver消息後,根據消息裏的參數DriverDescription建立好Driver,並等待調度。調度是schedule()方法觸發的。這時候Master會找到一臺Worker。而且給這臺Worker發送LaunchDriver命令,LaunchDriver命令裏帶的參數就包括這個Driver的信息。ip
而後就是Worker的過程了,這時候這臺Worker其實就是咱們的spark程序的Driver所在的機器。這時候Worker會執行DriverRunnber,跑的就是咱們的spark程序。it
最後還有個小疑問?DriverRunner裏是否是執行的是DriverWrapper呢?這點筆者還沒徹底搞明白哦。spark