2017-07-05 47 views
3

隨着Dynamic Resource AllocationApache Spark - 爲什麼執行程序被刪除? '空閒'是什麼意思?

火花應用程序將刪除時,它已經空閒了比spark.dynamicAllocation.executorIdleTimeout秒 更多的執行器。

當我設定的執行空閒超時屬性 爲隨後spark.dynamicAllocation.executorIdleTimeout= 300,它拋出以下警告

spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2) 

是什麼意思是「閒置」?這是否意味着工作人員不使用CPU?阻止對數據庫的調用是否計爲空閒?

回答

2

是什麼意思是 「空閒」 的數據?

要回答這個問題,我想回到官方文檔。因此,正如您在引用的文檔中提到的那樣,動態分配機制使Spark能夠根據工作負載動態調整應用程序佔用的資源。

這意味着你的應用程序可以:

  • 以後再次請求他們需要的時候。

  • 給資源回羣集,如果他們不再使用:執行人狀態被認爲空閒這是指定,它的設置,術語什麼都不做(和預留資源)。即:

    在你的情況下,產生以下警告:

    spark.ExecutorAllocationManager: Removing executor 0 because it has been idle for 300 seconds (new desired total will be 2) 
    

是否意味着工人不使用CPU?

執行程序保留CPU和內存。如果其他應用程序需要使用它們,那麼它是保留的。您的資源管理器無法爲其他應用程序分配資源。因此,在多個應用程序共享相同羣集的情況下,釋放它們可能是多產的。

阻止對數據庫的調用是否計爲空閒?

對數據庫的調用通常會要求資源,因此執行程序在執行任何類型的任務(即使是這一個)時都不是空閒的。

要了解有關ExecutorAllocationManager的更多信息,我建議您查看它的代碼here

+1

很好的解釋! –

1

空閒意味着兩件事情:

  • 沒有有效的階段,在此執行
  • 沒有(明確)堅持在此執行