Если Spark поддерживает сброс памяти на диск, как может произойти Spark Out of Memory?

Я прочитал несколько документов об управлении памятью Spark.

На этой странице: Что будет делать spark, если у меня недостаточно памяти?. В нем говорится:

Spark stores partitions in LRU cache in memory. When cache hits its limit in size, it evicts the entry (i.e. partition) from it. When the partition has “disk” attribute (i.e. your persistence level allows storing partition on disk), it would be written to HDD and the memory consumed by it would be freed, unless you would request it. When you request it, it would be read into the memory, and if there won’t be enough memory some other, older entries from the cache would be evicted. If your partition does not have “disk” attribute, eviction would simply mean destroying the cache entry without writing it to HDD.

Тогда, если разделы могут переноситься на диск, если памяти недостаточно, как может возникнуть проблема с нехваткой памяти при работе Spark?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Spark может вытеснять только кэшированные блоки RDD. Это если есть RDD, которые приложение пометило для хранения в памяти. Таким образом, часть памяти для хранения может быть очищена, но не часть для выполнения. Управление искровой памятью утверждает, что

Execution memory refers to that used for computation in shuffles, joins, sorts and aggregations.

И можно ли их выселить или нет

Storage may not evict execution due to complexities in implementation.

Если объем памяти, доступной для JVM, меньше требуемой памяти для выполнения, OOM обязательно произойдет.

>> «Таким образом, часть памяти для хранения может быть очищена, но не часть для выполнения». Я вежливо оспариваю это утверждение, в документе, на который вы ссылаетесь, говорится, что часть для хранения не может вытеснить часть для выполнения, а вытеснит часть для хранения на основе LRU. Но если вся память исполнителя занята исполняемыми данными, то при дальнейшей необходимости исполнительные данные могут быть сброшены на диск. Согласно youtube.com/watch?v=dPHrykZL8Cg (в 7:11), данные выполнения также могут быть перенесены на диск.

Vikash Pareek 11.06.2020 19:19

@VikashPareek что, если исполнитель имеет дело с разливом в случайном порядке, а пара K-V, с которой мы сейчас имеем дело, огромна по размеру, прежде чем исполнитель сможет даже разлить на диск? Я полагаю, это может вызвать OOM? Я также ищу ответы на этот вопрос, возможно, поделитесь своим мнением.

void 29.10.2020 17:54

Другие вопросы по теме