10.spark executor

spark executor

Executorspark任務(task)的執行單元,運行在worker上,但是不等同於worker,實際上它是一組計算資源(cpu核心、memory)的集合。一個worker上的memorycpu由多個executor共同分攤。

 

spark.executor.cores顧名思義這個參數是用來指定executorcpu內核個數,分配更多的內核意味着executor併發能力越強,能夠同時執行更多的task

 

 

spark.cores.max 爲一個application分配的最大cpu核心數如果沒有設置這個值默認爲spark.deploy.defaultCores

 

spark.executor.memory:配置executor內存大小

 


筆者在使用過程中總結如下規律:

  • executor個數 = spark.max.cores / spark.executor.cores,集羣的executor個數由spark.max.coresspark.executor.cores共同決定,注意在standalonemesos coarse-grained模式 下cores不要大於對應節點的內核數
  • 要保證每個worker上啓動的executor均衡。如果不均衡的話會造成數據傾斜,拉慢任務的整體速 度。在運行過程中一個stask對應一個partition,配置不均衡,會導致每個節點處理的任務量不一樣,因此會產生短板效應。
  • 如果運行過程中發現GC時間變紅(管理界面可以看到),應該適當調大spark.executor.memory


本文轉自:這裏

發佈了13 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章