我們目前遇到的問題是,Spark作業在YARN上運行時看到因超出內存限制而導致許多容器被殺死。SPARK:YARN殺死超過內存限制的容器
16/11/18 17:58:52 WARN TaskSetManager: Lost task 53.0 in stage 49.0 (TID 32715, XXXXXXXXXX):
ExecutorLostFailure (executor 23 exited caused by one of the running tasks)
Reason: Container killed by YARN for exceeding memory limits. 12.4 GB of 12 GB physical memory used.
Consider boosting spark.yarn.executor.memoryOverhead.
以下參數正在通過傳遞火花提交:
--executor-memory=6G
--driver-memory=4G
--conf "spark.yarn.executor.memoryOverhead=6G"`
我使用星火2.0.1。
在閱讀了關於YARN殺死容器的幾篇文章(例如How to avoid Spark executor from getting lost and yarn container killing it due to memory limit?)之後,我們增加了memoryOverhead到這個值。
鑑於我的參數和日誌消息,它似乎確實「當內存使用量大於(executor-memory + executor.memoryOverhead)」時,Yarn會殺死執行程序。
繼續增加這個開銷是不現實的,希望最終我們找到一個不會發生這些錯誤的值。我們在幾個不同的工作中看到了這個問題。我會很感激任何建議,我應該改變的參數,我應該檢查的東西,我應該開始尋找調試這個等等。我能夠提供進一步的配置選項等。
你使用Spark SQL嗎? –
是的,廣泛 – user2682459
當您使用巨大的數據集時,您可以嘗試將'spark-defaults.conf'中的'spark.default.parallelism'和'spark.sql.shuffle.partitions'增加到更高的值。這會減少內存使用量。 –