Как уменьшить память исполнителя на основании результатов выполнения - PullRequest
0 голосов
/ 04 марта 2019

У Spark есть spark.executor.memory.Насколько я понимаю, даже если моему приложению не нужно то, что определяет spark.executor.memory.Spark по-прежнему выделяет spark.executor.memory каждому исполнителю.Если мое приложение SQL использует намного меньше, чем spark.executor.memory, оно тратит много ресурсов.

После выполнения, есть ли способ узнать реальную память, используемую моей работой?

Ifound peakExecutionMemory из https://spark.apache.org/docs/latest/monitoring.html

Пиковая память, используемая внутренними структурами данных, созданными во время перемешивания, агрегирования и объединения.Значение этого аккумулятора должно быть приблизительно суммой размеров пиков во всех таких структурах данных, созданных в этой задаче.Для заданий SQL отслеживаются только все небезопасные операторы и ExternalSort.

Однако после завершения работы приложения на вкладке Этапы пользовательского интерфейса Spark показатель Пиковой памяти выполнения всегда равен 0.

Мое приложение использует SQL.На вкладке SQL в пользовательском интерфейсе Spark в разделе Details for Query отображаются метрики плана выполнения DAG.Я могу видеть

peak memory total (min, med, max): 
31.1 GB (256.0 KB, 64.2 MB, 64.2 MB)

в каком-то узле DAG.Как читать метрики, 31.1G кажется очень большим против 64.2M.Как этот показатель связан с peakExecutionMemory?

Мой общий вопрос: «Как уменьшить память исполнителя на основании результатов выполнения».Не уверен, что приведенная выше метрика является правильной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...