Мне нужна помощь с проблемой памяти искры. У меня есть приложение Spark, работающее внутри одного JVM в качестве капсула Kubernetes. Характер работы заключается в том, что это пакетная работа, она работает в течение 4-5 часов, а затем стручок простаивает. Каждая партия обрабатывается после 12-часового разрыва. Как только все задания завершены, а стручка простаивает, память не снижается с 80 ГБ. В следующем партийном цикле (разрыв составляет 12 часов), память начинает увеличиваться с 80 ГБ до тех пор, пока она не убьет при 100 ГБ < /p>
Я также попытался взять свалку кучи. Выброс кучи указывает на небезопасную распределитель памяти. Я подозреваю, что физическая память выделяется вне JVM и не очищается, но я не уверен, какая работа/конфигурация Spark может вызвать эту проблему.
Код: Выделить всё
One instance of org.apache.spark.unsafe.memory.HeapMemoryAllocator loaded by jdk.internal.loader.ClassLoaders$AppClassLoader 1,61,06,14,312 (89.24%) bytes. The memory is accumulated in one instance of java.util.LinkedList, loaded by , which occupies 1,61,06,14,112 (89.24%) bytes.
Кроме того, я проверил в вкладке «Хранение» и Spark UI, она не показывает никакой кэшированной RDD.
Подробнее здесь:
https://stackoverflow.com/questions/795 ... -spark-job