Qu'est-ce que JuiceFS ?
Les collaborations entre les communautés open-source sont une chose magique. Non seulement des bénévoles passionnés, intelligents et créatifs assurent l'innovation des solutions open-source, mais ils s'efforcent également de réunir différents outils de manière intéressante et utile. Milvus, la base de données vectorielles la plus populaire au monde, et JuiceFS, un système de fichiers partagé conçu pour les environnements cloud-native, ont été réunis dans cet esprit par leurs communautés open-source respectives. Cet article explique ce qu'est JuiceFS, comment construire un cluster Milvus basé sur le stockage de fichiers partagés JuiceFS et les performances que les utilisateurs peuvent attendre de cette solution.
Qu'est-ce que JuiceFS ?
JuiceFS est un système de fichiers POSIX distribué open-source haute performance, qui peut être construit au-dessus de Redis et de S3. Il a été conçu pour les environnements cloud-native et prend en charge la gestion, l'analyse, l'archivage et la sauvegarde de données de tout type. JuiceFS est couramment utilisé pour résoudre les défis liés au big data, créer des applications d'intelligence artificielle (IA) et collecter des logs. Le système prend également en charge le partage de données entre plusieurs clients et peut être utilisé directement comme stockage partagé dans Milvus.
Une fois que les données et les métadonnées correspondantes sont persistées dans le stockage d'objets et Redis respectivement, JuiceFS sert d'intergiciel sans état. Le partage des données est réalisé en permettant à différentes applications de s'amarrer les unes aux autres de manière transparente par le biais d'une interface de système de fichiers standard. JuiceFS s'appuie sur Redis, un magasin de données en mémoire open-source, pour le stockage des métadonnées. Redis est utilisé parce qu'il garantit l'atomicité et fournit des opérations de métadonnées très performantes. Toutes les données sont stockées dans le stockage d'objets par le client JuiceFS. Le schéma de l'architecture est le suivant :
juicefs-architecture.png
Construire un cluster Milvus basé sur JuiceFS
Un cluster Milvus construit avec JuiceFS (voir le diagramme d'architecture ci-dessous) fonctionne en divisant les demandes en amont à l'aide de Mishards, un intergiciel de partage de cluster, pour faire descendre les demandes en cascade vers ses sous-modules. Lors de l'insertion de données, Mishards attribue les demandes en amont au nœud d'écriture Milvus, qui stocke les données nouvellement insérées dans JuiceFS. Lors de la lecture de données, Mishards charge les données de JuiceFS via un nœud de lecture Milvus vers la mémoire pour traitement, puis collecte et renvoie les résultats des sous-services en amont.
milvus-cluster-built-with-juicefs.png
Étape 1 : Lancer le service MySQL
Lancez le service MySQL sur n'importe quel nœud du cluster. Pour plus de détails, voir Gérer les métadonnées avec MySQL.
Étape 2 : Créer un système de fichiers JuiceFS
À des fins de démonstration, le programme binaire JuiceFS précompilé est utilisé. Téléchargez le paquet d'installation adapté à votre système et suivez le Guide de démarrage rapide de JuiceFS pour obtenir des instructions d'installation détaillées. Pour créer un système de fichiers JuiceFS, configurez d'abord une base de données Redis pour le stockage des métadonnées. Il est recommandé d'héberger le service Redis sur le même cloud que l'application pour les déploiements dans les clouds publics. En outre, configurez le stockage d'objets pour JuiceFS. Dans cet exemple, Azure Blob Storage est utilisé, mais JuiceFS prend en charge presque tous les services d'objets. Sélectionnez le service de stockage d'objets qui répond le mieux aux exigences de votre scénario.
Après avoir configuré le service Redis et le stockage d'objets, formatez un nouveau système de fichiers et montez JuiceFS dans le répertoire local :
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
Si le serveur Redis n'est pas exécuté localement, remplacez localhost par l'adresse suivante :
redis://<user:password>@host:6379/1
.
Lorsque l'installation réussit, JuiceFS renvoie la page de stockage partagé /root/jfs.
installation-success.png
Étape 3 : Démarrer Milvus
Milvus doit être installé sur tous les nœuds du cluster et chaque nœud Milvus doit être configuré avec une autorisation de lecture ou d'écriture. Un seul nœud Milvus peut être configuré comme nœud en écriture, les autres devant être des nœuds en lecture. Tout d'abord, définissez les paramètres des sections cluster
et general
dans le fichier de configuration du système Milvus server_config.yaml:
Section cluster
Paramètre | Paramètre Description | Configuration |
---|---|---|
enable | Activation ou non du mode cluster | true |
role | Rôle de déploiement Milvus | rw /ro |
Section 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
Pendant l'installation, le chemin d'accès au stockage partagé JuiceFS configuré est défini comme /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
Une fois l'installation terminée, démarrez Milvus et vérifiez qu'il est lancé correctement. Enfin, démarrez le service Mishards sur l 'un des nœuds du cluster. L'image ci-dessous montre un lancement réussi de Mishards. Pour plus d'informations, consultez le tutoriel GitHub.
mishards-launch-success.png
Critères de performance
Les solutions de stockage partagé sont généralement mises en œuvre par des systèmes de stockage en réseau (NAS). Les types de systèmes NAS couramment utilisés comprennent le système de fichiers réseau (NFS) et le bloc de messages serveur (SMB). Les plateformes de cloud public fournissent généralement des services de stockage gérés compatibles avec ces protocoles, tels que Amazon Elastic File System (EFS).
Contrairement aux systèmes NAS traditionnels, JuiceFS est mis en œuvre sur la base du système de fichiers dans l'espace utilisateur (FUSE), où toutes les lectures et écritures de données ont lieu directement du côté de l'application, ce qui réduit encore la latence d'accès. JuiceFS possède également des caractéristiques uniques que l'on ne retrouve pas dans les autres systèmes NAS, telles que la compression et la mise en cache des données.
Les tests de référence révèlent que JuiceFS offre des avantages majeurs par rapport à EFS. Dans le benchmark des métadonnées (Figure 1), JuiceFS enregistre des opérations d'E/S par seconde (IOPS) jusqu'à dix fois supérieures à celles d'EFS. En outre, le benchmark du débit d'E/S (Figure 2) montre que JuiceFS surpasse EFS dans les scénarios à tâche unique et à tâches multiples.
performance-benchmark-1.png
performance-benchmark-2.png
En outre, les tests de référence montrent que le temps de récupération de la première requête, ou le temps de chargement des données nouvellement insérées du disque vers la mémoire, pour le cluster Milvus basé sur JuiceFS n'est que de 0,032 seconde en moyenne, ce qui indique que les données sont chargées du disque vers la mémoire presque instantanément. Pour ce test, le temps de récupération de la première requête est mesuré en utilisant un million de lignes de données vectorielles à 128 dimensions insérées par lots de 100k à des intervalles de 1 à 8 secondes.
JuiceFS est un système de stockage de fichiers partagés stable et fiable, et le cluster Milvus construit sur JuiceFS offre à la fois des performances élevées et une capacité de stockage flexible.
En savoir plus sur Milvus
Milvus est un outil puissant capable d'alimenter une vaste gamme d'applications d'intelligence artificielle et de recherche de similarités vectorielles. Pour en savoir plus sur le projet, consultez les ressources suivantes :
- Lisez notre blog.
- Interagissez avec notre communauté open-source sur Slack.
- Utilisez ou contribuez à la base de données vectorielles la plus populaire au monde sur GitHub.
- Testez et déployez rapidement des applications d'IA grâce à notre nouveau camp d'entraînement.
writer bio-changjian gao.png
writer bio-jingjing jia.png
- Construire un cluster Milvus basé sur JuiceFS
- Critères de performance
- En savoir plus sur 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