Монтирование бакетов Object Storage к файловой системе хостов Yandex Data Processing
В сервисе Yandex Data Processing вы можете использовать для настройки хостов скрипты инициализации (initialization actions).
С их помощью можно автоматизировать установку и настройку программы GeeseFS, позволяющей хостам кластера Yandex Data Processing монтировать бакеты Yandex Object Storage через FUSE
Чтобы настроить GeeseFS:
- Подготовьте скрипт инициализации.
- Создайте кластер, использующий скрипт инициализации.
- Проверьте доступность бакета.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Создайте сервисный аккаунт с ролями
dataproc.agent
иdataproc.provisioner
. -
Создайте бакет Yandex Object Storage.
-
Предоставьте сервисному аккаунту доступ на чтение из бакета. Для этого воспользуйтесь одним из способов:
-
Настройте ACL бакета и выдайте сервисному аккаунту разрешение
READ
.Сервисный аккаунт получит доступ на чтение только к указанному бакету.
-
Назначьте сервисному аккаунту роль
storage.viewer
.Сервисный аккаунт получит доступ на чтение ко всем бакетам в каталоге.
-
Подготовьте скрипт инициализации
-
Создайте файл скрипта инициализации
geesefs_mount.sh
, принимающий два позиционных аргумента — имя бакета Yandex Object Storage и директорию в файловой системе хоста, куда он должен быть смонтирован.#!/bin/bash set -e BUCKET=$1 MOUNT_POINT=$2 # Загрузка GeeseFS wget https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-linux-amd64 -O /opt/geesefs chmod a+rwx /opt/geesefs mkdir -p "${MOUNT_POINT}" # Подготовка скрипта, выполняющегося при каждой загрузке BOOT_SCRIPT="/var/lib/cloud/scripts/per-boot/80-geesefs-mount.sh" echo "#!/bin/bash" >> ${BOOT_SCRIPT} echo "/opt/geesefs -o allow_other --iam ${BUCKET} ${MOUNT_POINT}" >> ${BOOT_SCRIPT} chmod 755 ${BOOT_SCRIPT} # Запуск скрипта ${BOOT_SCRIPT}
-
Загрузите файл
geesefs_mount.sh
в созданный ранее бакет Yandex Object Storage.
Создайте кластер, использующий скрипт инициализации
Создайте кластер Yandex Data Processing со следующими параметрами:
-
В поле Сервисный аккаунт выберите сервисный аккаунт, созданный ранее.
-
В поле Пользовательские скрипты нажмите кнопку Добавить и задайте параметры скрипта:
-
В поле URI укажите путь к файлу скрипта в бакете, например:
s3a://<имя_бакета>/geesefs_mount.sh
-
В поле Аргументы укажите имя созданного ранее бакета и точку монтирования
/mnt/test
. Аргументы указываются на отдельных строках:<имя_бакета> /mnt/test
-
-
В поле Имя бакета выберите бакет, созданный ранее.
-
В меню Подкластеры включите в настройках опцию Публичный доступ. Это позволит подключаться к хостам подкластеров без использования промежуточной виртуальной машины.
Проверьте доступность бакета
-
После того, как кластер перейдет в статус Alive, подключитесь по SSH от имени пользователя
ubuntu
к любому из его хостов. -
Чтобы убедиться в успешном монтировании бакета, выполните команду:
ls /mnt/test/<имя_бакета>
В результате будет выведен список объектов, хранящихся в корневом каталоге бакета. В данном случае — имя файла
geesefs_mount.sh
.
Удалите созданные ресурсы
Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:
- Удалите кластер Yandex Data Processing.
- Если для доступа к хостам кластера использовались статические публичные IP-адреса, освободите и удалите их.
- Удалите бакет Yandex Object Storage.