1. 程式人生 > >jar包是怎麼提交到Spark上執行的

jar包是怎麼提交到Spark上執行的

我們都知道,寫好spark程式後,可以通過命令列spark-submit方式提交到叢集,那麼這個具體的過程是怎麼搞得呢?

spark有多種叢集方式,如yarn,standalone等。提交方式又分為client和cluster等模式,這裡就先拿standalone的client方式舉例。

standalone方式下,spark叢集有一個master和多個worker組成叢集,現在spark又支援HA方式的熱備,保障master安全,這塊我們就不談了,知道這個概念就行了。

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的資訊。

然後就是Worker的過程了,這時候這臺Worker其實就是我們的spark程式的Driver所在的機器。這時候Worker會執行DriverRunnber,跑的就是我們的spark程式。

最後還有個小疑問?DriverRunner裡是不是執行的是DriverWrapper呢?這點筆者還沒完全搞明白