Опции с томами в "Spark on Kubernetes" | OTUS

Опции с томами в "Spark on Kubernetes"

Уже начиная со Spark версии 2.4, в случае применения Spark on Kubernetes появилась возможность монтировать 3 типа томов. Рассмотрим их подробнее:

  • emptyDir. Эта директория изначально пуста и существует до тех пор, пока работает под. По сути, она полезна именно для временного хранения. Поддерживать ее можно посредством SSD, диска ноды либо сетевого хранилища;
  • hostpath. В данном случае в ваш под монтируется директория непосредственно из текущей ноды;
  • статически и заблаговременно создаваемый PersistentVolumeClaim. Не что иное, как Kubernetes-абстракция, предназначенная для различных типов персистентного хранилища. Как уже было упомянуто выше, пользователь должен создавать PersistentVolumeClaim заранее. Остается добавить, что существование тома к поду не привязано.

1_dExybAJeomHZxzWaMA6rAQ_1-1801-b9eaa3.png

Начиная со Spark версии 3.1, у пользователей появились 2 новых варианта:

  • NFS;
  • динамически создаваемый PersistentVolumeClaims.

Давайте рассмотрим их более детально.

NFS (Network File System)

NFS представляет собой том, который могут несколько подов использовать в одно и то же время, причем этот том можно наполнить данными заранее. По сути, речь идет о способе обмена информацией, конфигурациями и кодом между Spark-приложениями или же между драйвером и исполнителем непосредственно внутри какого-либо Spark-приложения. Так как в Kubernetes отсутствует NFS-сервер, вы можете запускать его самостоятельно либо задействуя облачный сервис.

После того, как NFS создан, этот том можно без труда монтировать в Spark-приложение посредством следующих настроек:

1-1801-dc4b0f.png

Таким образом, NFS представляет собой популярный способ обмена данными, производимый между любыми Spark-приложениями. Ну и тот факт, что теперь он может работать поверх Kubernetes, разумеется, не может не радовать.

0_lRKG7KAEpZbwEEKr_1-1801-0e6fdd.png

PVC

Второй момент — динамический PVC. Считается, что PVC представляет собой более удобный способ применения персистентных томов. Раньше надо было сначала создавать PVC, ну а потом их монтировать. Это имело свои минусы, ведь в случае применения динамического выделения пользователь не знает, сколько можно создать исполнителей в процессе работы приложения, то есть можно констатировать, что старый способ был несколько неудобен. Кроме того, приходилось самому "чистить" ненужные PersistentVolumeClaims либо мириться с потерей места в хранилище.

Но вот, появился Spark версии 3.1, и все стало динамическим и автоматизированным. Теперь при инициализации Spark-приложения либо в ходе динамического выделения, когда пользователь запрашивает новых исполнителей, в Kubernetes динамически формируется и создается PersistentVolumeClaims, который в автоматическом режиме предоставляет новый PersistentVolumes запрошенного класса хранилища. При этом в случае удаления пода ассоциированные с этим подом ресурсы удаляются тоже автоматически.

По материалам https://towardsdatascience.com/apache-spark-3-1-release-spark-on-kubernetes-is-now-generally-available-65cccbf1436b.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться