Как получить память, используемую Spark Executor

#apache-spark

#apache-spark

Вопрос:

Я пытаюсь понять, в порядке ли наша конфигурация памяти или мы чрезмерно выделяем ресурсы в нашем исполнителе, но я не могу понять, как получить использование памяти. Обратите внимание, что у меня есть ограничение на получение информации через Spark REST API.

Что я могу увидеть, если я извлеку данные для исполнителя (используя http://host:4072/api/v1/applications/app-20201109081013-5073/allexecutors ) is (обратите внимание, что я удалил некоторые данные для ясности):

 {
  "id" : "0",
  "hostPort" : "",
  "isActive" : true,
  "memoryUsed" : 50515998177,
  "diskUsed" : 0,
  "maxMemory" : 10119177830,
  "addTime" : "2020-11-09T08:10:15.933GMT",
  "memoryMetrics" : {
    "usedOnHeapStorageMemory" : 50515998177,
    "usedOffHeapStorageMemory" : 0,
    "totalOnHeapStorageMemory" : 10119177830,
    "totalOffHeapStorageMemory" : 0
  }
  

Я могу понять maxMemory , что это в основном выделенная память (10 ГБ из 16 ГБ из-за разделения области памяти)… но я озадачен 50 ГБ, которые я мог видеть как memoryUsed .
Похоже, это сумма памяти хранилища, используемой с момента запуска, поскольку она постоянно растет…
Та же информация отображается на вкладке Executors в Spark UI.

Та же информация, что и на вкладке Executor в пользовательском интерфейсе

Итак, возникает вопрос: есть ли способ получить текущую используемую память хранилища и, что не менее важно, то же самое для памяти выполнения?

Большое вам спасибо