Что такое JuiceFS?
Сотрудничество между сообществами разработчиков открытого кода - волшебная вещь. Увлеченные, умные и творческие добровольцы не только поддерживают инновационные решения с открытым исходным кодом, но и работают над тем, чтобы объединить различные инструменты интересными и полезными способами. Milvus, самая популярная в мире векторная база данных, и JuiceFS, общая файловая система, разработанная для облачных сред, были объединены в этом духе их соответствующими сообществами с открытым исходным кодом. В этой статье мы расскажем о том, что такое JuiceFS, как построить кластер Milvus на базе общей файловой системы JuiceFS, а также о производительности, которую могут ожидать пользователи от этого решения.
Что такое JuiceFS?
JuiceFS - это высокопроизводительная распределенная POSIX-файловая система с открытым исходным кодом, которая может быть построена поверх Redis и S3. Она была разработана для облачных нативных сред и поддерживает управление, анализ, архивирование и резервное копирование данных любого типа. JuiceFS обычно используется для решения задач, связанных с большими данными, создания приложений искусственного интеллекта (ИИ) и сбора логов. Система также поддерживает совместное использование данных несколькими клиентами и может быть использована непосредственно в качестве общего хранилища в Milvus.
После того как данные и соответствующие им метаданные сохраняются в объектном хранилище и Redis соответственно, JuiceFS выступает в качестве промежуточного ПО без статических данных. Совместное использование данных реализуется за счет того, что различные приложения могут беспрепятственно взаимодействовать друг с другом через стандартный интерфейс файловой системы. Для хранения метаданных JuiceFS опирается на Redis, хранилище данных in-memory с открытым исходным кодом. Redis используется потому, что он гарантирует атомарность и обеспечивает высокую производительность операций с метаданными. Все данные хранятся в объектном хранилище через клиент JuiceFS. Схема архитектуры выглядит следующим образом:
juicefs-architecture.png
Построение кластера Milvus на базе JuiceFS
Кластер Milvus, построенный на основе JuiceFS (см. схему архитектуры ниже), работает путем разделения запросов на восходящие потоки с помощью Mishards, промежуточного ПО для шардинга кластеров, чтобы каскадировать запросы вниз к своим субмодулям. При вставке данных Mishards распределяет восходящие запросы на узел записи Milvus, который хранит новые вставленные данные в JuiceFS. При чтении данных Mishards загружает их из JuiceFS через узел чтения Milvus в память для обработки, а затем собирает и возвращает результаты от подсервисов выше по потоку.
milvus-cluster-built-with-juicefs.png
Шаг 1: Запуск службы MySQL
Запустите службу MySQL на любом узле кластера. Подробнее см. в разделе Управление метаданными с помощью MySQL.
Шаг 2: Создайте файловую систему JuiceFS
В демонстрационных целях используется предварительно скомпилированная двоичная программа JuiceFS. Загрузите подходящий для вашей системы установочный пакет и следуйте краткому руководству по установке JuiceFS для получения подробных инструкций. Чтобы создать файловую систему JuiceFS, сначала настройте базу данных Redis для хранения метаданных. Для развертывания в публичном облаке рекомендуется размещать службу Redis в том же облаке, что и приложение. Кроме того, настройте объектное хранилище для JuiceFS. В этом примере используется Azure Blob Storage, однако JuiceFS поддерживает почти все объектные сервисы. Выберите службу хранения объектов, которая лучше всего соответствует требованиям вашего сценария.
После настройки службы Redis и объектного хранилища отформатируйте новую файловую систему и смонтируйте JuiceFS в локальный каталог:
1 $ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3 --storage wasb \
4 --bucket https://<container> \
5 ... \
6 localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs #mount
8
Если сервер Redis запущен не локально, замените localhost на следующий адрес:
redis://<user:password>@host:6379/1
.
Когда установка пройдет успешно, JuiceFS вернет страницу общего хранилища /root/jfs.
installation-success.png
Шаг 3: Запустите Milvus
На всех узлах кластера должен быть установлен Milvus, и каждый узел Milvus должен быть настроен с правами чтения или записи. Только один узел Milvus может быть настроен как узел записи, остальные должны быть узлами чтения. Сначала задайте параметры секций cluster
и general
в файле конфигурации системы Milvus server_config.yaml:
Секция cluster
Параметр | Описание | Конфигурация |
---|---|---|
enable | Включать ли режим кластера | true |
role | Роль развертывания Milvus | rw /ro |
Раздел general
# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
timezone: UTC+8
meta_uri: mysql://root:milvusroot@host:3306/milvus
Во время установки настроенный путь к общему хранилищу JuiceFS установлен как /root/jfs/milvus/db.
1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \ #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9
После завершения установки запустите Milvus и убедитесь, что он запустился должным образом. Наконец, запустите службу Mishards на любом из узлов кластера. На изображении ниже показан успешный запуск Mishards. Для получения дополнительной информации обратитесь к руководству на GitHub.
mishards-launch-success.png
Контрольные показатели производительности
Решения для совместного хранения данных обычно реализуются с помощью сетевых систем хранения (NAS). Обычно используются такие типы систем NAS, как сетевая файловая система (NFS) и блок серверных сообщений (SMB). Публичные облачные платформы обычно предоставляют управляемые сервисы хранения, совместимые с этими протоколами, например Amazon Elastic File System (EFS).
В отличие от традиционных NAS-систем, JuiceFS реализована на базе Filesystem in Userspace (FUSE), где все операции чтения и записи данных происходят непосредственно на стороне приложения, что еще больше снижает задержки доступа. Кроме того, JuiceFS обладает уникальными функциями, которые не встречаются в других NAS-системах, например, сжатие и кэширование данных.
Бенчмарк-тестирование показало, что JuiceFS имеет значительные преимущества перед EFS. В бенчмарке метаданных (рис. 1) количество операций ввода-вывода в секунду (IOPS) в JuiceFS в десять раз выше, чем в EFS. Кроме того, в бенчмарке I/O throughput (рисунок 2) JuiceFS превосходит EFS как в однозадачном, так и в многозадачном сценарии.
performance-benchmark-1.png
performance-benchmark-2.png
Кроме того, тестирование показало, что время получения первого запроса, или время загрузки новых данных с диска в память, для кластера Milvus на базе JuiceFS составляет в среднем всего 0,032 секунды, что говорит о том, что данные загружаются с диска в память практически мгновенно. В этом тесте время поиска по первому запросу измерялось с использованием одного миллиона строк 128-мерных векторных данных, вставляемых партиями по 100 тыс. с интервалом от 1 до 8 секунд.
JuiceFS - это стабильная и надежная файловая система хранения данных общего доступа, а кластер Milvus, построенный на JuiceFS, обеспечивает высокую производительность и гибкие возможности хранения данных.
Узнайте больше о Milvus
Milvus - это мощный инструмент, способный обеспечить работу огромного количества приложений искусственного интеллекта и векторного поиска сходства. Чтобы узнать больше о проекте, ознакомьтесь со следующими ресурсами:
- Читайте наш блог.
- Общайтесь с нашим сообществом разработчиков открытого кода в Slack.
- Используйте самую популярную в мире базу данных векторов на GitHub и вносите в нее свой вклад.
- Быстро протестируйте и разверните приложения ИИ с помощью нашего нового буткемпа.
биография писателя чанцзянь гао.png
биография писателя цзинцзин цзя.png
- Построение кластера Milvus на базе JuiceFS
- Контрольные показатели производительности
- Узнайте больше о Milvus
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word