為了調試python腳本在spark-sumit時要注意的事項,網上查了一通資料
然後發現了這篇
Spark的driver了解和executor了解
又是圖又是代碼的講了好多,
其實開頭那個圖已經有核心要點了
圖中每一個白背景黑線框就是對應實體機器的粒度
圖上沒有說到的,是driver program的位置會因為送出作業時的deploy-mode參數和cluster manager 的排程政策而變動
要了解和記住這些也不複雜
- 當spark-submit沒有提供deploy-mode參數,或者設定為–deploy-mode client時,driver program就在你執行spark-submit的機器上
- 當spark-submit的設定為–deploy-mode cluster時,driver program運作在spark-submit指令中連接配接的cluster裡,其中某一個worker node上,在driver啟動前并不固定是哪一個,driver啟動後不變
- worker node在cluster manager的排程政策和自身資源滿足的前提下,是可以同時存在driver program和executor的,甚至可以一個worker node上同時存在多個executor
- 這種設計是因為driver program與多個executor之間要有通信往來。在實際生産環境中,能執行spark-submit的機器和spark叢集所在的網絡位置甚至實體距離都可以隔很遠,如果在執行spark-submit的位置部署driver program非常低效,不如讓spark在叢集内找一個worker node來部署driver program, 快很多。