天天看點

Spark的driver和executor簡化版了解

為了調試python腳本在spark-sumit時要注意的事項,網上查了一通資料

然後發現了這篇

Spark的driver了解和executor了解

又是圖又是代碼的講了好多,

其實開頭那個圖已經有核心要點了

Spark的driver和executor簡化版了解

圖中每一個白背景黑線框就是對應實體機器的粒度

圖上沒有說到的,是driver program的位置會因為送出作業時的deploy-mode參數和cluster manager 的排程政策而變動

要了解和記住這些也不複雜

  1. 當spark-submit沒有提供deploy-mode參數,或者設定為–deploy-mode client時,driver program就在你執行spark-submit的機器上
  2. 當spark-submit的設定為–deploy-mode cluster時,driver program運作在spark-submit指令中連接配接的cluster裡,其中某一個worker node上,在driver啟動前并不固定是哪一個,driver啟動後不變
  3. worker node在cluster manager的排程政策和自身資源滿足的前提下,是可以同時存在driver program和executor的,甚至可以一個worker node上同時存在多個executor
  4. 這種設計是因為driver program與多個executor之間要有通信往來。在實際生産環境中,能執行spark-submit的機器和spark叢集所在的網絡位置甚至實體距離都可以隔很遠,如果在執行spark-submit的位置部署driver program非常低效,不如讓spark在叢集内找一個worker node來部署driver program, 快很多。

繼續閱讀