🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI

¿Qué es JuiceFS?

  • Engineering
June 15, 2021
Changjian Gao and Jingjing Jia

Las colaboraciones entre comunidades de código abierto son algo mágico. Los voluntarios apasionados, inteligentes y creativos no sólo mantienen innovadoras las soluciones de código abierto, sino que también trabajan para unir diferentes herramientas de formas interesantes y útiles. Milvus, la base de datos vectorial más popular del mundo, y JuiceFS, un sistema de archivos compartido diseñado para entornos nativos en la nube, fueron unidos con este espíritu por sus respectivas comunidades de código abierto. Este artículo explica qué es JuiceFS, cómo construir un clúster Milvus basado en el almacenamiento de archivos compartidos JuiceFS y el rendimiento que los usuarios pueden esperar utilizando esta solución.

¿Qué es JuiceFS?

JuiceFS es un sistema de archivos POSIX distribuido de código abierto y alto rendimiento, que puede construirse sobre Redis y S3. Fue diseñado para entornos nativos de la nube y admite la gestión, el análisis, el archivo y la copia de seguridad de datos de cualquier tipo. JuiceFS se utiliza habitualmente para resolver retos de big data, crear aplicaciones de inteligencia artificial (IA) y recopilar registros. El sistema también permite compartir datos entre varios clientes y puede utilizarse directamente como almacenamiento compartido en Milvus.

Después de que los datos, y sus metadatos correspondientes, persistan en el almacenamiento de objetos y Redis respectivamente, JuiceFS sirve como un middleware sin estado. La compartición de datos se realiza permitiendo que diferentes aplicaciones se acoplen entre sí sin problemas a través de una interfaz de sistema de archivos estándar. JuiceFS se basa en Redis, un almacén de datos en memoria de código abierto, para el almacenamiento de metadatos. Se utiliza Redis porque garantiza la atomicidad y proporciona operaciones de metadatos de alto rendimiento. Todos los datos se almacenan en un almacén de objetos a través del cliente JuiceFS. El diagrama de arquitectura es el siguiente

juicefs-architecture.png juicefs-arquitectura.png

Construir un cluster Milvus basado en JuiceFS

Un clúster Milvus construido con JuiceFS (véase el diagrama de arquitectura más abajo) funciona dividiendo las peticiones ascendentes utilizando Mishards, un middleware de fragmentación de clústeres, para enviar en cascada las peticiones a sus submódulos. Al insertar datos, Mishards asigna las solicitudes ascendentes al nodo de escritura Milvus, que almacena los datos recién insertados en JuiceFS. Al leer datos, Mishards carga los datos desde JuiceFS a través de un nodo de lectura Milvus a la memoria para su procesamiento y, a continuación, recoge y devuelve los resultados de los sub-servicios aguas arriba.

milvus-cluster-built-with-juicefs.png milvus-cluster-construido-con-juicefs.png

Paso 1: Iniciar el servicio MySQL

Inicie el servicio MySQL en cualquier nodo del cluster. Para obtener más información, consulte Gestionar metadatos con MySQL.

Paso 2: Crear un sistema de archivos JuiceFS

Para fines de demostración, se utiliza el programa binario precompilado JuiceFS. Descargue el paquete de instalación correcto para su sistema y siga la Guía de inicio rápido de JuiceFS para obtener instrucciones de instalación detalladas. Para crear un sistema de archivos JuiceFS, primero configure una base de datos Redis para el almacenamiento de metadatos. Se recomienda alojar el servicio Redis en la misma nube que la aplicación para las implantaciones en nubes públicas. Además, configure el almacenamiento de objetos para JuiceFS. En este ejemplo, se utiliza Azure Blob Storage; sin embargo, JuiceFS admite casi todos los servicios de objetos. Seleccione el servicio de almacenamiento de objetos que mejor se adapte a las exigencias de su escenario.

Después de configurar el servicio Redis y el almacenamiento de objetos, formatea un nuevo sistema de archivos y monta JuiceFS en el directorio 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 el servidor Redis no se ejecuta localmente, sustituya localhost por la siguiente dirección: redis://<user:password>@host:6379/1.

Cuando la instalación tiene éxito, JuiceFS devuelve la página de almacenamiento compartido /root/jfs.

installation-success.png installation-success.png

Paso 3: Iniciar Milvus

Todos los nodos del cluster deben tener Milvus instalado, y cada nodo Milvus debe estar configurado con permiso de lectura o escritura. Sólo un nodo Milvus puede configurarse como nodo de escritura, y el resto deben ser nodos de lectura. En primer lugar, configure los parámetros de las secciones cluster y general en el fichero de configuración del sistema Milvus server_config.yaml:

Sección cluster

ParámetroDescripciónConfiguración
enableSi se habilita el modo clustertrue
roleFunción de despliegue de Milvusrw/ro

Sección 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

Durante la instalación, la ruta de almacenamiento compartido JuiceFS configurada se establece como /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

Una vez finalizada la instalación, inicie Milvus y confirme que se ha iniciado correctamente. Por último, inicie el servicio Mishards en cualquiera de los nodos del clúster. La siguiente imagen muestra el inicio correcto de Mishards. Para más información, consulte el tutorial de GitHub.

mishards-launch-success.png mishards-lanzamiento-éxito.png

Parámetros de rendimiento

Las soluciones de almacenamiento compartido suelen implementarse mediante sistemas de almacenamiento conectados a la red (NAS). Entre los tipos de sistemas NAS más utilizados se encuentran Network File System (NFS) y Server Message Block (SMB). Las plataformas de nube pública suelen ofrecer servicios de almacenamiento gestionado compatibles con estos protocolos, como Amazon Elastic File System (EFS).

A diferencia de los sistemas NAS tradicionales, JuiceFS se implementa basándose en Filesystem in Userspace (FUSE), donde toda la lectura y escritura de datos tiene lugar directamente en el lado de la aplicación, lo que reduce aún más la latencia de acceso. JuiceFS también cuenta con funciones exclusivas que no se encuentran en otros sistemas NAS, como la compresión de datos y el almacenamiento en caché.

Las pruebas comparativas revelan que JuiceFS ofrece grandes ventajas sobre EFS. En la prueba de metadatos (Figura 1), JuiceFS registra operaciones de E/S por segundo (IOPS) hasta diez veces superiores a EFS. Además, la prueba de rendimiento de E/S (Figura 2) muestra que JuiceFS supera a EFS en escenarios de una y varias tareas.

performance-benchmark-1.png performance-benchmark-1.png

performance-benchmark-2.png rendimiento-benchmark-2.png

Además, las pruebas comparativas muestran que el tiempo de recuperación de la primera consulta, o tiempo para cargar datos recién insertados del disco a la memoria, para el clúster Milvus basado en JuiceFS es de sólo 0,032 segundos de media, lo que indica que los datos se cargan del disco a la memoria casi instantáneamente. Para esta prueba, el tiempo de recuperación de la primera consulta se mide utilizando un millón de filas de datos vectoriales de 128 dimensiones insertados en lotes de 100k a intervalos de 1 a 8 segundos.

JuiceFS es un sistema de almacenamiento de archivos compartidos estable y fiable, y el clúster Milvus construido sobre JuiceFS ofrece tanto un alto rendimiento como una capacidad de almacenamiento flexible.

Más información sobre Milvus

Milvus es una potente herramienta capaz de alimentar una amplia gama de aplicaciones de inteligencia artificial y búsqueda vectorial de similitudes. Para obtener más información sobre el proyecto, consulte los siguientes recursos:

  • Lea nuestro blog.
  • Interactúe con nuestra comunidad de código abierto en Slack.
  • Utilice o contribuya a la base de datos vectorial más popular del mundo en GitHub.
  • Pruebe y despliegue rápidamente aplicaciones de IA con nuestro nuevo bootcamp.

writer bio-changjian gao.png writer bio-changjian gao.png writer bio-jingjing jia.pngwriter bio-jingjing jia.png

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Sigue Leyendo