专栏首页Reinvent Data Science基于 JuiceFS 搭建 Milvus 分布式集群

基于 JuiceFS 搭建 Milvus 分布式集群

✏️ 作者介绍:

贾晶晶,Zilliz 数据工程师 & 高昌健,Juicedata 解决方案架构师,十年互联网行业从业经历,曾在知乎、即刻、小红书多个团队担任架构师职位,专注于分布式系统、大数据、AI 领域的技术研究。

JuiceFS【1】 是一款针对云原生环境设计的共享文件系统,支持所有类型数据的管理、分析、归档和备份,被广泛应用于大数据、人工智能、日志收集等场景。JuiceFS 支持多端数据共享,可以直接作为 Milvus 底层的共享存储。本文详细介绍了如何基于 JuiceFS 共享存储搭建 Milvus 分布式集群。

JuiceFS 介绍

JuiceFS 是一款基于云原生环境设计的高性能开源 POSIX 文件系统。在数据和所对应的元数据分别持久化至对象存储和 Redis 后,JuiceFS 将作为无状态的中间件,使得不同应用能够以标准的文件系统接口无缝对接,从而实现数据共享。JuiceFS 依靠 Redis 来存储文件的元数据。Redis 是一个开源的内存数据库,可以保障元数据操作的原子性和高性能。所有文件的数据通过客户端存储到对象存储中,架构图如下:

基本架构

结合 JuiceFS 搭建 Milvus 分布式集群的架构如下图所示,其中 Mishards 负责将上游请求拆分并路由到内部各细分子服务。插入数据时,Mishards 会将请求分配到 Milvus 写节点上,通过写节点将插入的数据存储到 JuiceFS 中;读取数据时,Mishards 就会通过 Milvus 读节点从 JuiceFS 中读取数据到内存中进行处理,最后将处理结果进行汇总,返回给上游。

搭建步骤

1. 安装并启动 MySQL 服务

MySQL 服务只需要在集群中任意一台设备上启动即可,具体参考 Milvus 文档:使用 MySQL 管理元数据【2】。

2. 安装 JuiceFS

本文中选择的是 JuiceFS 的预编译版本【3】,用户可以直接下载,详细安装过程参考 JuiceFS 安装教程【4】。JuiceFS 需要先安装 Redis,如果你使用的是公有云,建议直接使用公有云托管的 Redis 服务。JuiceFS 也需要配置对象存储(详细步骤参考文章 【5】),文中使用的是 Azure Blob Storage。JuiceFS 现已支持所有主流的对象存储,用户可自行选择适合的对象存储服务。

配置好 Redis 服务及对象存储之后,需要格式化一个新的文件系统,然后将 JuiceFS 挂载到本地目录中:

$  export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
$ ./juicefs format \
    --storage wasb \
    --bucket https://<container> \
    ... \
    localhost test #格式化
$ ./juicefs mount -d localhost ~/jfs  #挂载

注:如果 Redis 服务不在本地,需要将 localhost 替换成如下完整地址:redis://user:password@host:6379/1

如下图所示,成功安装 JuiceFS 后,即可得到共享存储的路径 /root/jfs

3. 启动 Milvus

集群中的每一台设备均需要安装 Milvus,并分别为不同设备上的 Milvus 配置读写权限。其中仅可将一台设备中的 Milvus 配置为写入,其余均为只读。首先,在 Milvus 的系统配置文件 server_config.yaml 中,配置 cluster 区域和 general 区域的参数。

cluster 区域

参数

说明

参数设置

enable

是否开启集群模式

true

role

节点的运行模式

rw (ro)

general 区域

参数

说明

参数设置

meta_uri

元数据存储的 URI。使用 MySQL(Milvus 分布式版本)作为元数据的存储后端。URI 格式为 mysql://username:password@host:port/database。

mysql://root:milvusroot@host:3306/milvus

Milvus 安装过程中,/root/jfs/milvus/db 映射是已配置完成的 JuiceFS 共享存储路径。

sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
-p 19530:19530 \
-p 19121:19121 \
-v /root/jfs/milvus/db:/var/lib/milvus/db \  #/root/jfs/milvus/db为共享存储的路径
-v /home/$USER/milvus/conf:/var/lib/milvus/conf \
-v /home/$USER/milvus/logs:/var/lib/milvus/logs \
-v /home/$USER/milvus/wal:/var/lib/milvus/wal \
milvusdb/milvus:1.0.0-gpu-d030521-1ea92e

安装完成后,启动 Milvus,并检验 Milvus 是否启动成功。

最后,参考 GitHub 中教程【6】,在集群中任意一台设备上启动 Mishards 服务。下图表示 Mishards 启动成功。

共享存储方案通常使用 Network-attached Storage(NAS)系统实现,常用的协议包括 Network File System(NFS)、Server Message Block(SMB) 等。公有云上一般也会提供兼容这些协议的托管存储服务,例如 Amazon Elastic File System(EFS)。

区别于传统的 NAS 系统,JuiceFS 基于 Filesystem in Userspace(FUSE)实现,数据读写都直接发生在应用端,因此能进一步降低访问延迟。此外,JuiceFS 还提供一些 NAS 系统不具备的特性,如数据压缩、数据缓存等,性能也有大幅提升。在与 EFS 的对比测试中,JuiceFS 表现出了较大优势。如图 1 所示,在原数据操作性能上,JuiceFS 的表现明显优于 EFS,差距最大时 JuiceFS 的性能可优于 EFS 十倍之多。图 2 记录了在顺序写与顺序读测试中 JuiceFS 与 EFS 的 I/O 吞吐性能数据:无论在单任务或是多任务的测试中,JuiceFS 相比 EFS 都有较大的性能提升。

图 1

图 2

除了 JuiceFS 与 EFS 的对比测试,我们还测试了结合 JuiceFS 搭建的 Milvus 分布式集群的第一次检索时间。第一次检索时间指将新导入的数据从磁盘加载到内存的耗时。将 100 万条 128 维的数据以每 10 万条为单位分批插入,每间隔 1 至 8 秒进行检索,测试结果显示平均检索时间为 0.032 秒,表明从磁盘加载到内存的耗时较少。上述测试证明了 JuiceFS 作为共享存储设备的稳定性,基于 JuiceFS 搭建 Milvus 分布式集群能兼顾高性能和弹性存储容量。

参考链接:

【1】JuiceFS:https://github.com/juicedata/juicefs

【2】使用 MySQL 管理元数据:https://milvus.io/cn/docs/v1.0.0/data_manage.md

【3】JuiceFS 的预编译版本:https://github.com/juicedata/juicefs/releases

【4】JuiceFS 安装教程:https://github.com/juicedata/juicefs/blob/main/README_CN.md

【5】配置对象存储:https://github.com/juicedata/juicefs/blob/main/docs/zh_cn/how_to_setup_object_storage.md

【6】 GitHub 教程:https://github.com/milvus-io/bootcamp/tree/new-bootcamp/deployments/juicefs

Github @Milvus-io|CSDN @Zilliz Planet|Bilibili @Zilliz-Planet

本文分享自微信公众号 - ZILLIZ(Zilliztech),作者:高昌健

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Milvus 实战 | 基于 Kubernetes 的分布式集群部署方案

    Milvus 作为一款针对海量特征向量的相似度搜索引擎,在单台服务器上就可以处理十亿级数据规模。而对于百亿或者千亿级数据,则需要具有水平扩展能力的 Milvus...

    Zilliz RDS
  • Milvus 在趋势科技的实践

    趋势科技(TrendMicro)是一家全球领先的信息安全软件公司,专为全球软件厂商及个人用户提供安全解决方案。本文作者目前负责构建移动安全 APP 和开发基础设...

    Zilliz RDS
  • ZooKeeper的伪分布式集群搭建以及真分布式集群搭建

    和其他大多数集群结构一样,zookeeper集群也是主从结构。搭建集群时,机器数量最低也是三台,因为小于三台就无法进行选举。选举就是当集群中的master节点挂...

    端碗吹水
  • AI 搜房,贝壳找房的Milvus实践

    贝壳作为一家房产服务互联网平台,如何在海量房源中选出能够快速成交的房源是对平台和经纪人来说都是一件非常重要同时具有挑战的事情,但是针对房型图,户型信息等一系列非...

    Zilliz RDS
  • hadoop分布式集群搭建

    程序员同行者
  • hbase分布式集群搭建

    程序员同行者
  • Hadoop分布式集群搭建

    Hadoop分布式集群和前面的伪分布式安装方法类似,Hadoop用户创建,ssh配置,java环境安装,Hadoop安装等过程查看前一篇:Hadoop的安装和使...

    foochane
  • Clickhouse分布式集群搭建

    安装zookeeper集群,也可以使用现成的,本次使用现成的,配置如下,后续加入配置文件中

    职场亮哥
  • MongoDB4.0搭建分布式集群

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    拓荒者
  • MongoDB4.0搭建分布式集群

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    拓荒者
  • consul分布式集群搭建

    上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到...

    1850810
  • 基于 Milvus 构建的近似最近邻(ANN)搜索引擎

    根据格像科技公司的业务需求,我们需要搭建一个近似最近邻(Approximate Nearest Neighbor,即 ANN)搜索引擎,以便将在线向量相似搜索功...

    Zilliz RDS
  • 相似视频搜索—Opera 的 Milvus 实践

    Opera 成立于 1995 年,总部位于挪威奥斯陆,是全球领先的浏览器提供商及数字内容发现和推荐平台领域的先驱。20 多年来,数百万名用户通过 Opera 网...

    Zilliz RDS
  • Chat with Milvus #3 回顾 - ANN-Benchmarks 测试结果

    http://mpvideo.qpic.cn/0bf2leaaaaaa3qalyodiobpfawodabmqaaaa.f10002.mp4?dis_k=175...

    Zilliz RDS
  • Milvus 在 Tokopedia 的应用 | 让语义搜索更加智能

    Tokopedia 是印度尼西亚最大的电商平台,目前拥有逾 9000 万月活跃用户和 860 万家商户,覆盖印尼 98% 的行政区。我们深知,帮助用户迅速并精准...

    Zilliz RDS
  • 基于 Milvus 的以图搜图系统 2.0

    Milvus 以图搜图 1.0 版本自发布以来便受到广大用户的欢迎。近日,Zilliz 推出了 Milvus 以图搜图系统 2.0 版。本文将介绍 Milvus...

    Zilliz RDS
  • Milvus 实战 | Milvus 与 BERT 搭建文本搜索

    Google 的 BERT 模型在 NL 领域中具有巨大的影响力。它是一个通用的语言表示模型,可以应用于诸多领域。本文的项目是将 Milvus 与 BERT ...

    Zilliz RDS
  • Milvus 到底有多少种玩法?这份攻略合集请收好!

    Milvus 是一款开源的向量相似度搜索引擎,支持使用多种 AI 模型将非结构化数据向量化,并为向量数据提供搜索服务。Milvus 集成了 Faiss、Anno...

    Zilliz RDS
  • 在腾讯云上安装和使用 JuiceFS 存储

    JuiceFS 是一个云原生的企业级开源共享文件系统,广泛应用于大数据、企业级数据共享、Kubernetes 容器编排、AI 机器学习、Web 服务和内容管理、...

    谈笑有Herald

扫码关注云+社区

领取腾讯云代金券