簡體   English   中英

分析spark執行器內存轉儲{幾天后紗線容器運行內存}

[英]Analyzing spark executor memory dump { After few days yarn container runs of out memory}

我正在研究spark 1.3,我的應用程序是一個火花流應用程序。 我用紗線作為資源經理。 我的應用程序運行良好幾天,然后定期激活作業丟失執行程序。 當我查看node_manager日志時,我發現了一個異常:

containerId XXXX is running beyond physical memory limits. Current usage: 11.1 GB of 11 GB physical memory used; 13.4 GB of 23.1 GB virtual memory used. Killing container.

我對這個例外的問題如下:

  1. 我理解11G會記住執行程序運行。 但我在spark-defaults.conf中將10G設置為執行程序內存。 那么如何將11G分配給執行者以及這里提到的虛擬內存是什么?

  2. 當容器內存不足時,我是否可以在堆和堆內存轉儲中看到任何工具或方法,或者是否有一種方法可以遠程連接到容器JVM並查看哪些對象是causig內存泄漏。

謝謝

  1. 你忘記了spark.yarn.executor.memoryOverhead屬性:

spark.yarn.executor.memoryOverhead

executorMemory * 0.10,最小值為384每個執行程序要分配的堆外內存量(以兆字節為單位)。 這是一個內存,可以解決諸如VM開銷,實習字符串,其他本機開銷等問題。這往往會隨着執行程序的大小而增加(通常為6-10%)。

在你的情況下,它大約是1G。

  1. 您可以為OOM使用常見的java屬性: -XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=.. 只需通過spark.executor.extraJavaOptions添加這些屬性spark.executor.extraJavaOptions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM