Was ist JuiceFS?
Die Zusammenarbeit zwischen Open-Source-Gemeinschaften ist eine magische Sache. Leidenschaftliche, intelligente und kreative Freiwillige sorgen nicht nur dafür, dass Open-Source-Lösungen innovativ bleiben, sondern auch dafür, dass verschiedene Tools auf interessante und nützliche Weise zusammengeführt werden. Milvus, die weltweit beliebteste Vektordatenbank, und JuiceFS, ein gemeinsam genutztes Dateisystem für Cloud-native Umgebungen, wurden von ihren jeweiligen Open-Source-Gemeinschaften in diesem Sinne zusammengeführt. In diesem Artikel wird erklärt, was JuiceFS ist, wie man einen Milvus-Cluster auf der Grundlage des gemeinsamen Dateispeichers JuiceFS aufbaut und welche Leistung die Benutzer von dieser Lösung erwarten können.
Was ist JuiceFS?
JuiceFS ist ein leistungsstarkes, quelloffenes, verteiltes POSIX-Dateisystem, das auf Redis und S3 aufgebaut werden kann. Es wurde für Cloud-native Umgebungen entwickelt und unterstützt das Verwalten, Analysieren, Archivieren und Sichern von Daten jeglicher Art. JuiceFS wird häufig für die Lösung von Big-Data-Herausforderungen, den Aufbau von Anwendungen für künstliche Intelligenz (KI) und die Protokollerfassung verwendet. Das System unterstützt auch die gemeinsame Nutzung von Daten durch mehrere Clients und kann direkt als gemeinsamer Speicher in Milvus verwendet werden.
Nachdem die Daten und die zugehörigen Metadaten im Objektspeicher bzw. in Redis persistiert wurden, dient JuiceFS als zustandslose Middleware. Die gemeinsame Nutzung von Daten wird dadurch realisiert, dass verschiedene Anwendungen über eine Standard-Dateisystemschnittstelle nahtlos aneinander andocken können. JuiceFS nutzt Redis, einen Open-Source-In-Memory-Datenspeicher, für die Speicherung von Metadaten. Redis wird verwendet, weil es Atomarität garantiert und hochleistungsfähige Metadatenoperationen bietet. Alle Daten werden über den JuiceFS-Client im Objektspeicher gespeichert. Das Architekturdiagramm sieht wie folgt aus:
juicefs-architecture.png
Aufbau eines Milvus-Clusters auf der Grundlage von JuiceFS
Ein mit JuiceFS aufgebauter Milvus-Cluster (siehe nachstehendes Architekturdiagramm) funktioniert durch die Aufteilung von Upstream-Anforderungen mithilfe von Mishards, einer Cluster-Sharding-Middleware, um die Anforderungen kaskadenförmig an seine Untermodule weiterzuleiten. Beim Einfügen von Daten weist Mishards vorgelagerte Anforderungen dem Milvus-Schreibknoten zu, der neu eingefügte Daten in JuiceFS speichert. Beim Lesen von Daten lädt Mishards die Daten aus dem JuiceFS über einen Milvus-Leseknoten zur Verarbeitung in den Speicher und sammelt dann die Ergebnisse der vorgelagerten Teildienste und gibt sie zurück.
milvus-cluster-built-mit-juicefs.png
Schritt 1: Starten des MySQL-Dienstes
Starten Sie den MySQL-Dienst auf einem beliebigen Knoten des Clusters. Einzelheiten finden Sie unter Verwalten von Metadaten mit MySQL.
Schritt 2: Erstellen eines JuiceFS-Dateisystems
Zu Demonstrationszwecken wird das vorkompilierte Binärprogramm JuiceFS verwendet. Laden Sie das richtige Installationspaket für Ihr System herunter und befolgen Sie die JuiceFS-Kurzanleitung für detaillierte Installationsanweisungen. Um ein JuiceFS-Dateisystem zu erstellen, richten Sie zunächst eine Redis-Datenbank für die Speicherung von Metadaten ein. Es wird empfohlen, den Redis-Dienst bei Public Cloud-Bereitstellungen in derselben Cloud wie die Anwendung zu hosten. Richten Sie außerdem einen Objektspeicher für JuiceFS ein. In diesem Beispiel wird Azure Blob Storage verwendet; JuiceFS unterstützt jedoch fast alle Objektdienste. Wählen Sie den Objektspeicherdienst, der den Anforderungen Ihres Szenarios am besten entspricht.
Nachdem Sie den Redis-Dienst und den Objektspeicher konfiguriert haben, formatieren Sie ein neues Dateisystem und hängen JuiceFS in das lokale Verzeichnis ein:
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
Wenn der Redis-Server nicht lokal ausgeführt wird, ersetzen Sie localhost durch die folgende Adresse:
redis://<user:password>@host:6379/1
.
Wenn die Installation erfolgreich war, gibt JuiceFS die Seite des gemeinsamen Speichers /root/jfs zurück.
installation-success.png
Schritt 3: Starten Sie Milvus
Auf allen Knoten des Clusters sollte Milvus installiert sein, und jeder Milvus-Knoten sollte mit Lese- oder Schreibberechtigung konfiguriert sein. Nur ein Milvus-Knoten kann als Schreibknoten konfiguriert werden, die anderen müssen Leseknoten sein. Setzen Sie zunächst die Parameter der Abschnitte cluster
und general
in der Milvus-Systemkonfigurationsdatei server_config.yaml:
Abschnitt cluster
Parameter | Beschreibung | Konfiguration |
---|---|---|
enable | Ob der Clustermodus aktiviert werden soll | true |
role | Milvus-Bereitstellungsrolle | rw /ro |
Abschnitt 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
Während der Installation wird der gemeinsam genutzte JuiceFS-Speicherpfad auf /root/jfs/milvus/db festgelegt.
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
Starten Sie nach Abschluss der Installation Milvus und vergewissern Sie sich, dass es ordnungsgemäß gestartet wurde. Starten Sie anschließend den Mishards-Dienst auf einem der Knoten im Cluster. Das folgende Bild zeigt einen erfolgreichen Start von Mishards. Weitere Informationen finden Sie in der GitHub-Anleitung.
mishards-launch-erfolgreich.png
Leistungs-Benchmarks
Gemeinsame Speicherlösungen werden in der Regel durch Network-Attached-Storage-Systeme (NAS) implementiert. Zu den häufig verwendeten NAS-Systemtypen gehören Network File System (NFS) und Server Message Block (SMB). Öffentliche Cloud-Plattformen bieten im Allgemeinen verwaltete Speicherdienste an, die mit diesen Protokollen kompatibel sind, wie z. B. Amazon Elastic File System (EFS).
Im Gegensatz zu herkömmlichen NAS-Systemen ist JuiceFS auf der Grundlage von FUSE (Filesystem in Userspace) implementiert, wobei alle Lese- und Schreibvorgänge direkt auf der Anwendungsseite stattfinden, was die Zugriffslatenz weiter verringert. JuiceFS verfügt außerdem über einzigartige Funktionen, die in anderen NAS-Systemen nicht zu finden sind, wie z. B. Datenkomprimierung und Caching.
Benchmark-Tests zeigen, dass JuiceFS erhebliche Vorteile gegenüber EFS bietet. Im Metadaten-Benchmark (Abbildung 1) verzeichnet JuiceFS bis zu zehnmal höhere E/A-Operationen pro Sekunde (IOPS) als EFS. Außerdem zeigt der E/A-Durchsatz-Benchmark (Abbildung 2), dass JuiceFS sowohl in Einzel- als auch in Multi-Job-Szenarien besser abschneidet als EFS.
leistung-benchmark-1.png
leistung-benchmark-2.png
Darüber hinaus zeigen die Benchmark-Tests, dass die Zeit für die erste Abfrage, d. h. die Zeit zum Laden neu eingefügter Daten von der Festplatte in den Speicher, für den JuiceFS-basierten Milvus-Cluster im Durchschnitt nur 0,032 Sekunden beträgt, was darauf hindeutet, dass die Daten fast sofort von der Festplatte in den Speicher geladen werden. Für diesen Test wurde die Abrufzeit für die erste Abfrage mit einer Million Zeilen 128-dimensionaler Vektordaten gemessen, die in Stapeln von 100k in Intervallen von 1 bis 8 Sekunden eingefügt wurden.
JuiceFS ist ein stabiles und zuverlässiges gemeinsames Dateispeichersystem, und der auf JuiceFS aufgebaute Milvus-Cluster bietet sowohl hohe Leistung als auch flexible Speicherkapazität.
Erfahren Sie mehr über Milvus
Milvus ist ein leistungsstarkes Tool, das eine Vielzahl von Anwendungen für künstliche Intelligenz und Vektorähnlichkeitssuche unterstützt. Wenn Sie mehr über das Projekt erfahren möchten, lesen Sie die folgenden Ressourcen:
- Lesen Sie unseren Blog.
- Interagieren Sie mit unserer Open-Source-Community auf Slack.
- Nutzen Sie die beliebteste Vektordatenbank der Welt auf GitHub oder tragen Sie zu ihr bei.
- Testen und implementieren Sie KI-Anwendungen schnell mit unserem neuen Bootcamp.
Autor bio-changjian gao.png
Autor bio-jingjing jia.png
- Aufbau eines Milvus-Clusters auf der Grundlage von JuiceFS
- Leistungs-Benchmarks
- Erfahren Sie mehr über 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