Если Spark поддерживает разлив памяти на диск, как это может произойти? - PullRequest
0 голосов
/ 10 апреля 2019

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

На этой странице: Что будет делать искра, если мне не хватит памяти? .Там написано:

Spark хранит разделы в кеше LRU в памяти.Когда кэш достигает своего предела размера, он удаляет запись (то есть раздел) из него.Если раздел имеет атрибут «диск» (т. Е. Ваш уровень персистентности позволяет хранить раздел на диске), он будет записан на жесткий диск, а используемая им память будет освобождена, если вы не запросите его.Когда вы запросите его, он будет считан в память, и если не будет достаточно памяти, некоторые другие старые записи из кэша будут удалены.Если ваш раздел не имеет атрибута «диск», удаление будет просто означать уничтожение записи в кеше без записи на жесткий диск.

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

1 Ответ

1 голос
/ 10 апреля 2019

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

Память выполнения относится к памяти, используемой для вычислений в случайном порядке, объединениях, сортировках и агрегациях.

И могут ли они быть выселены или нет

Хранилище может не исключать выполнение из-за сложностей в реализации.

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

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