O que é o JuiceFS?
As colaborações entre comunidades de código aberto são uma coisa mágica. Voluntários apaixonados, inteligentes e criativos não apenas mantêm as soluções de código aberto inovadoras, mas também trabalham para reunir diferentes ferramentas de maneiras interessantes e úteis. O Milvus, a base de dados vetorial mais popular do mundo, e o JuiceFS, um sistema de ficheiros partilhado concebido para ambientes nativos da nuvem, foram unidos neste espírito pelas respectivas comunidades de código aberto. Este artigo explica o que é o JuiceFS, como criar um cluster Milvus baseado no armazenamento de ficheiros partilhados JuiceFS e o desempenho que os utilizadores podem esperar com esta solução.
O que é o JuiceFS?
O JuiceFS é um sistema de ficheiros POSIX distribuído de alto desempenho e de código aberto, que pode ser construído sobre o Redis e o S3. Ele foi projetado para ambientes nativos da nuvem e suporta o gerenciamento, a análise, o arquivamento e o backup de dados de qualquer tipo. O JuiceFS é normalmente utilizado para resolver desafios de grandes volumes de dados, criar aplicações de inteligência artificial (IA) e recolher registos. O sistema também suporta a partilha de dados entre vários clientes e pode ser utilizado diretamente como armazenamento partilhado no Milvus.
Depois de os dados e os metadados correspondentes serem persistidos no armazenamento de objectos e no Redis, respetivamente, o JuiceFS funciona como um middleware sem estado. A partilha de dados é realizada permitindo que diferentes aplicações se liguem umas às outras sem problemas através de uma interface de sistema de ficheiros padrão. O JuiceFS depende do Redis, um armazenamento de dados em memória de código aberto, para o armazenamento de metadados. O Redis é utilizado porque garante a atomicidade e fornece operações de metadados de elevado desempenho. Todos os dados são armazenados no armazenamento de objectos através do cliente JuiceFS. O diagrama de arquitetura é o seguinte:
juicefs-architecture.png
Construir um cluster Milvus baseado no JuiceFS
Um cluster Milvus construído com o JuiceFS (ver diagrama de arquitetura abaixo) funciona dividindo os pedidos a montante utilizando o Mishards, um middleware de fragmentação de clusters, para fazer descer os pedidos em cascata até aos seus sub-módulos. Ao inserir dados, o Mishards aloca solicitações upstream para o nó de gravação Milvus, que armazena os dados recém-inseridos no JuiceFS. Ao ler dados, o Mishards carrega os dados do JuiceFS através de um nó de leitura Milvus para a memória para processamento, depois recolhe e devolve os resultados dos sub-serviços a montante.
milvus-cluster-built-with-juicefs.png
Passo 1: Iniciar o serviço MySQL
Inicie o serviço MySQL em qualquer nó do cluster. Para obter detalhes, consulte Gerenciar metadados com o MySQL.
Etapa 2: criar um sistema de arquivos JuiceFS
Para fins de demonstração, é usado o programa JuiceFS binário pré-compilado. Baixe o pacote de instalação correto para seu sistema e siga o Guia de início rápido do JuiceFS para obter instruções detalhadas de instalação. Para criar um sistema de arquivos JuiceFS, primeiro configure um banco de dados Redis para armazenamento de metadados. Recomenda-se que, para implantações em nuvem pública, você hospede o serviço Redis na mesma nuvem que o aplicativo. Além disso, configure o armazenamento de objetos para o JuiceFS. Neste exemplo, o Armazenamento de Blobs do Azure é usado; no entanto, o JuiceFS dá suporte a quase todos os serviços de objeto. Selecione o serviço de armazenamento de objetos que melhor se adapta às demandas do seu cenário.
Depois de configurar o serviço Redis e o armazenamento de objetos, formate um novo sistema de arquivos e monte o JuiceFS no diretório 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
Se o servidor Redis não estiver a ser executado localmente, substitua o localhost pelo seguinte endereço:
redis://<user:password>@host:6379/1
.
Quando a instalação for bem sucedida, o JuiceFS devolve a página de armazenamento partilhado /root/jfs.
installation-success.png
Passo 3: Iniciar o Milvus
Todos os nós do cluster devem ter o Milvus instalado, e cada nó do Milvus deve ser configurado com permissão de leitura ou gravação. Apenas um nó do Milvus pode ser configurado como nó de escrita, e os demais devem ser nós de leitura. Primeiro, defina os parâmetros das secções cluster
e general
no ficheiro de configuração do sistema Milvus server_config.yaml:
Secção cluster
Parâmetro | Descrição | Configuration (Configuração) |
---|---|---|
enable | Ativar ou não o modo de cluster | true |
role | Função de implantação do Milvus | rw /ro |
Secção 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 a instalação, o caminho de armazenamento partilhado JuiceFS configurado é definido 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
Após a conclusão da instalação, inicie o Milvus e confirme se ele foi iniciado corretamente. Por fim, inicie o serviço Mishards em qualquer um dos nós do cluster. A imagem abaixo mostra um lançamento bem-sucedido do Mishards. Para obter mais informações, consulte o tutorial do GitHub.
mishards-launch-success.png
Referências de desempenho
As soluções de armazenamento compartilhado geralmente são implementadas por sistemas de armazenamento conectado à rede (NAS). Os tipos de sistemas NAS normalmente usados incluem o Sistema de Arquivos de Rede (NFS) e o Bloco de Mensagens do Servidor (SMB). As plataformas de nuvem pública geralmente fornecem serviços de armazenamento gerenciado compatíveis com esses protocolos, como o Amazon Elastic File System (EFS).
Ao contrário dos sistemas NAS tradicionais, o JuiceFS é implementado com base no Filesystem in Userspace (FUSE), em que toda a leitura e escrita de dados ocorre diretamente no lado da aplicação, reduzindo ainda mais a latência de acesso. Existem também funcionalidades exclusivas do JuiceFS que não podem ser encontradas noutros sistemas NAS, como a compressão de dados e a colocação em cache.
Os testes de benchmark revelam que o JuiceFS oferece grandes vantagens em relação ao EFS. No benchmark de metadados (Figura 1), o JuiceFS regista operações de E/S por segundo (IOPS) até dez vezes superiores ao EFS. Além disso, o benchmark de taxa de transferência de E/S (Figura 2) mostra que o JuiceFS supera o EFS em cenários de trabalho único e múltiplo.
performance-benchmark-1.png
performance-benchmark-2.png
Além disso, o teste de benchmark mostra que o tempo de recuperação da primeira consulta, ou o tempo para carregar dados recém-inseridos do disco para a memória, para o cluster Milvus baseado no JuiceFS é de apenas 0,032 segundos em média, indicando que os dados são carregados do disco para a memória quase instantaneamente. Para este teste, o tempo de recuperação da primeira consulta é medido utilizando um milhão de linhas de dados vectoriais de 128 dimensões inseridos em lotes de 100k em intervalos de 1 a 8 segundos.
O JuiceFS é um sistema de armazenamento de ficheiros partilhado estável e fiável, e o cluster Milvus construído sobre o JuiceFS oferece um elevado desempenho e uma capacidade de armazenamento flexível.
Saiba mais sobre o Milvus
O Milvus é uma ferramenta poderosa capaz de alimentar uma vasta gama de aplicações de inteligência artificial e de pesquisa de semelhanças vectoriais. Para saber mais sobre o projeto, consulte os seguintes recursos:
- Leia o nosso blogue.
- Interagir com a nossa comunidade de código aberto no Slack.
- Utilize ou contribua para a base de dados de vectores mais popular do mundo no GitHub.
- Testar e implementar rapidamente aplicações de IA com o nosso novo bootcamp.
biografia do escritor-changjian gao.png
biografia do escritor-jingjing jia.png
- Construir um cluster Milvus baseado no JuiceFS
- Referências de desempenho
- Saiba mais sobre o 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