Память
Это связано с управлением искровой памятью.
Цитирование из From: https://www.tutorialdocs.com/article/spark-memory-management.html
По умолчанию Spark использует только память «в куче». Размер оперативной памяти настраивается параметром –executor-memory или spark.executor.memory при запуске приложения Spark. Параллельные задачи, выполняемые в Executor, совместно используют оперативную память JVM.
Область оперативной памяти в Executor можно условно разделить на следующие четыре блока:
Storage Memory: It's mainly used to store Spark cache data, such as RDD
cache, Broadcast variable, Unroll data, and so on.
Execution Memory: It's mainly used to store temporary data in the calculation
. process of Shuffle, Join, Sort, Aggregation, etc.
User Memory: It's mainly used to store the data needed for RDD conversion
operations, such as the information for RDD dependency.
Reserved Memory: The memory is reserved for system and is used to store
Spark's internal objects.
Доступная память, которую вы видите на приборной панели, составляет 75% от выделенной памяти.
Общий объем выделенной памяти для каждого исполнителя может варьироваться в зависимости от доступной памяти в узле. Точные 236 ГБ могут быть недоступны для пряжи. Процесс обработки данных и т. Д. Может занять больше памяти.
Память, которую вы видите, является памятью. Память хранения + память выполнения = 75% от общего объема выделенной памяти.
Для получения дополнительной информации:
- https://databricks.com/session/deep-dive-apache-spark-memory-management
- https://0x0fff.com/spark-memory-management/
- https://www.tutorialdocs.com/article/spark-memory-management.html
Количество исполнителей
Вам необходимо проверить yarn.nodemanager.resource.memory-mb
в файле yarn-site.xml. Он обозначает «общую память, которую один NodeManager может выделить во всех контейнерах на одном узле». Это может быть случай, когда пряжа не дала всю доступную память в коробке. Поэтому искра не в состоянии договориться о 6 исполнителях.
Еще одна вещь spark.yarn.executor.memoryOverhead установлена в 384 МБ на исполнителя, если она не переопределена. Это необходимо добавить в расчет.
Для получения дополнительной информации
- Apache Spark: установка экземпляров executor не меняет исполнителей
Как пользовательский интерфейс вычисляет память
- Как веб-интерфейс вычисляет объем памяти (на вкладке «Исполнители»)?