常用分布式文件系统(对象存储)对比-SeaweedFS、Minio

这篇具有很好参考价值的文章主要介绍了常用分布式文件系统(对象存储)对比-SeaweedFS、Minio。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用分布式文件系统,相对比较热门的有Minio,SeaweedFS,FastDFS,ceph。主要对比一下Minio,SeaweedFS。

什么是SeaweedFS?

SeaweedFS是一种简单的、高度可扩展的分布式文件系统。SeaweedFS是一个非常优秀的由 Go语言开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存变得非常方便,它有两个优势:

  • 存储数十亿的文件!
  • 查看文件速度快!

SeaweedFS设计用来有效地存储处理小文件,较大文件可以分块拆分为小文件进行上传。所有文件的元数据不存储在Master节点,而是分散存储在Volume(逻辑卷,存储数据的逻辑结构)中,Master节点只保存卷 ID到卷服务器的映射,这样一来,Master节点的查询压力就被分散到volume节点了。这些文件卷服务器各自管理各自的元数据,存储在卷服务器上的所有文件元信息都可以从内存中读取,而无需访问磁盘。所以这样在高并发的情况下减少了主节点的压力和网络通信,同时定位文件也更迅速。其主要应用场景是存储海量的图片信息并且可以快读定位。
SeaweedFS是使用Go语言开发的,Github主页为:https://github.com/chrislusf/seaweedfs,使用SeaweedFS可以通过源码编译,需要提前安装Go环境;也可以使用编译好的二进制包,不依赖Go环境直接执行。Githup地址: https://github.com/chrislusf/seaweedfs   

Seaweedfs: 海藻是一个简单和高度可扩展的分布式文件系统,可以快速存储和服务数十亿个文件!
SeaseedFS对象存储具有O(1)磁盘寻道、透明云集成,SeaseedFS Filer支持跨DC主动-主动复制,Kubernetes,POSIX,S3 API,加密,热存储擦除编码,FUSE mount,Hadoop,WebDAV。

SeaweedFS架构:

fastdfs和minio哪个好,分布式文件系统,dfs

  • master service【主服务】和Volume service【卷服务】一起提供分布式对象存储服务,支持用户配置数据的复制和冗余策略。
  • 可选的Filer service【过滤器】和S3 service【S3服务】是对象存储之上的附加层,可以根据需要进行部署
  • 可选的Filer可以支持目录和POSIX属性。Filer是一个独立的线性可扩展的无状态服务器,具有可定制的元数据存储,例如MySql, Postgres, Redis, Cassandra, HBase, Mongodb, Elastic Search, LevelDB, RocksDB, Sqlite, MemSql, TiDB, Etcd, CockroachDB, YDB等。
  • 这些服务中的每一个都可以作为一个或单独的实例在各种实际服务器上运行。

SeaweedFS主要组件功能

  • master:负责管理所有的卷服务器(volume servers),分配文件ID,维护集群的元数据和状态。
  • volume:负责存储实际的文件内容,以及文件的大小,修改时间等属性。
  • filer:负责提供一个类似POSIX的文件层次结构,以及支持多种接口,如WebDAV,Hadoop等。
  • S3:负责提供一个兼容S3 API的网关,以及支持云端备份和分层存储等功能


与Minio的区别
SeaweedFS和minio都是开源的分布式对象存储系统,它们都支持S3 API,并且可以用于存储和处理大量的数据。但是它们也有一些区别,主要有以下几点:

  • SeaweedFS使用了一个独特的文件ID机制,将文件元数据和文件内容分开存储,从而避免了元数据瓶颈,并且可以实现O(1)的磁盘寻址minio则使用了传统的文件名和目录结构来组织文件,但是也提供了一些高级功能,如加密,压缩,版本控制等。
  • SeaweedFS提供了一个filer组件,它可以在master和卷服务器之间提供一个类似POSIX的文件层次结构,以及支持WebDAV,Hadoop等多种接口。minio则主要依赖于S3 API来访问和管理文件,但是也提供了一些其他工具,如mc命令行客户端,minio console web界面等。
  • SeaweedFS支持云端备份和分层存储,可以将冷数据迁移到云端存储服务,如AWS S3,Google Cloud Storage等。minio则支持多云复制和联邦模式,可以将数据在不同的云端存储服务之间同步和迁移。
  • SeaweedFS支持纠删码(Erasure Coding),可以在卷级别提高数据的可靠性和容错性。minio则支持分布式纠删码(Distributed Erasure Coding),可以在集群级别提高数据的可靠性和容错性。
  • MinIO没有针对大量小文件进行优化。文件只是按原样存储在本地磁盘上。再加上用于擦除编码的额外元文件和碎片,它只会放大LOSF问题。
  • MinIO读取一个文件需要多次磁盘IO,而SeaweedFS是O(1),即使对于擦除编码的文件也是如此。
  • MinIO具有全时擦除编码。SeaweedFS在热数据上使用复制以获得更快的速度,并可选择在热数据上应用擦除编码。
  • MinIO没有类似posix的API支持。
  • MinIO对存储布局【存储布局】有特定的要求导致不能灵活调整,在SeaweedFS中,调整只需启动一个指向主卷的卷服务器即可。

MinIO的缺点:

- 仅支持EC,会存在io放大的问题,特别是在大量小文件的场景下

- 扩容不太友好,对等扩容时需要全集群停止服务

- 支持的文件数量有限,基于本地文件系统设计,在对象数变多以后,inode的查找都会变得很耗时
 

SeaweedFS的缺点:S3的适配不完全: 实现了大部分的常用接口,部分非常用接口未实现,比如Canned ACL等


总的来说,SeaweedFS和minio都是优秀的分布式对象存储系统,它们各有各的优势和特点,选择哪一个取决于你的具体需求和场景。

Minio
minio应该是目前最火的开源的对象存储,github 3w4的star数。

minio的优点包括: 

  • - 友好的UI 
  • - 部署比较简单,很容易上手 
  • - 支持文件级别的自愈,在节点故障时无需人工干预 
  • - 全EC存储,成本相对比较低 
  • - 中大文件性能比较好 
  • - 基于文件系统设计,无需额外的存储来存储元数据

同样minio的缺点也相对明显 

  • - 仅支持EC,会存在io放大的问题,特别是在大量小文件的场景下 
  • - 扩容不太友好,对等扩容时需要全集群停止服务 
  • - 支持的文件数量有限,基于本地文件系统设计,在对象数变多以后,inode的查找都会变得很耗时

minio是一款有明显优缺点的产品,在我们的需求背景下,minio不能够很好的满足,特别是不能够支持我们10亿+对象存储需求,而且在现有的架构设计下,也不太好改造,然后通过与社区共建的方式来满足我们海量小文件的需求。

SeaweedFS
越来越火的对象存储开源方案,github star数1w5+,且增长速度比较喜人,社区也比较活跃。

SeaweedFS官方介绍的核心点有2个 
- to store billions of files! 
- to serve the files fast!

SeaweedFS是一个简单且高度可扩展的分布式文件系统,两个目标: 1、存储数十亿的文件! 2、查看文档快!

核心优点包括: 
- 性能比较强大: 核心理论依据是基于 Facebook's Haystack design paper,该paper的目标也是解决facebook内部图片视频等数据的存储查询问题 
- 架构设计比较灵活: 系统设计参照了Facebook’s Tectonic Filesystem,特别是几个核心组件的设计,抽象的比较好,非常方便扩展不同的实现,并且整体架构上可以水平扩容,没有明显的瓶颈点 
- 功能齐全: 存储比较关心的冷热分离,EC存储,TTL等功能都有支持 
- 部署简单: 部署非常简单,很容易上手

相比于优点,也会有些不足 - S3的适配不完全: 实现了大部分的常用接口,部分非常用接口未实现,比如Canned ACL等。 - 项目背景: 相比于minio等开源产品后面都是强大的商业化公司,该项目核心的作者只有 chrislusf 大神

MinIO

MinIO 是GlusterFS创始人之一Anand Babu Periasamy发布的开源项目,基于Apache V2 license 100% 开放源代码。MinIO采用Golang实现,客户端支持Java、Python、Javacript、Golang语言等。在中国,阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用MinIO产品。

设计的主要目标是作为私有云对象存储的标准方案。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据、容器和虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T。

Minio它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM映像。对象的大小可以从几KB到最大5TB。

HDFS(Hadoop Distributed File System)
Hadoop 实现了一个分布式文件系统,简称HDFS。Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。


FastDFS是一款类似GoogleFS的开源分布式文件系统,是纯C语言开发的。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

HDFS存在单点故障。交互式应用,低延迟很难知足。设计中没有考虑修改写、截断写、稀疏写等复杂的posix语义,目的并不是通用的文件系统,一般作为hadoop ecosystem的存储引擎。不支持多用户并发写相同文件。

FastDFS当一个storage中的某一目录挂载的磁盘损坏的话,不能进行自动恢复,需要手动恢复比较麻烦。不支持FUSE、POSIX。不支持断点续传。对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略。同步机制不支持文件正确性校验,降低了系统的可用性。文章来源地址https://www.toymoban.com/news/detail-775635.html

到了这里,关于常用分布式文件系统(对象存储)对比-SeaweedFS、Minio的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式文件存储系统-FastDFS

            前言:FastDFS 是一个分布式文件存储系统, 主要用于存储和管理 大规模 的 文件数据,如图片、视频、文档等 ,是淘宝前架构师为了存储图片用C语言开发出来的系统。         服务端有两个组件  Tracker Server 与 Storage Server ,对应两个角色: Tracker: 管理和调度集群

    2024年02月13日
    浏览(40)
  • Hadoop:HDFS--分布式文件存储系统

    目录   HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir  查看目录内容 -ls  上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendToFile HDFS文件移动 -mv  删除HDFS文件 -rm  

    2024年02月09日
    浏览(20)
  • Zookeeper的分布式文件系统与存储

    Zookeeper是一个开源的分布式协调服务,它为分布式应用提供一致性、可靠性和可扩展性等特性。Zookeeper的核心功能包括集群管理、配置管理、领导选举、分布式同步等。在分布式系统中,文件系统和存储是非常关键的组成部分,Zookeeper作为分布式协调服务,也可以用于管理和

    2024年02月20日
    浏览(24)
  • 淘宝分布式文件存储系统( 二 ) -TFS

    淘宝分布式文件存储系统( 二 ) -TFS 目录 : 大文件存储结构 哈希链表的结构 文件映射原理及对应的API 文件映射头文件的定义 大文件存储结构 : 采用块(block)文件的形式对数据进行存储 , 分成索引块,主块 , 扩展块 。所有的小文件都是存放到主块中的 ,扩展块用来保存溢出的数

    2024年02月07日
    浏览(18)
  • 淘宝分布式文件存储系统( 三 ) -TFS

    目录 : 文件重新映射的接口介绍 文件映射 mmap_file.cpp的实现 进行测试 文件重新映射 (增加 或者 减少 文件映射区域的大小) mremap() 函数的原型如下 #include sys/mman.h void *mremap( void * old_address , size_t old_size , size_t new_size , int flags ); 参数说明 : old_address :指向原映射区域的起始地

    2024年02月07日
    浏览(25)
  • OSS文件上传、MinIO分布式文件存储系统

    阿里云OSS上传图片 实现步骤: 1. 定义OSS相关配置 application-dev.yml application.yml 2. 读取OSS配置 在sky-common模块中,已定义 3. 生成OSS工具类对象 在sky-server模块 其中,AliOssUtil.java已在sky-common模块中定义 4. 定义文件上传接口 在sky-server模块中定义接口 MinIO分布式文件存储系统 MinI

    2024年01月24日
    浏览(22)
  • 搭建单机版FastDFS分布式文件存储系统

    1、下载FastDFS安装包和依赖包 https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.43 https://codeload.github.com/happyfish100/fastdfs/tar.gz/V6.06 https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/V1.22 注:可以使用window浏览器(下载后需要上传到服务器上),也可以使用linux的curl命令 2、

    2024年02月09日
    浏览(24)
  • HDFS Hadoop分布式文件存储系统整体概述

    整体概述举例: 包括机架 rack1、rack2 包括5个Datanode,一个Namenode( 主角色 )带领5个Datanode( 从角色 ),每一个rack中包含不同的block模块文件为 分块存储模式 。块与块之间通过replication进行 副本备份 ,进行冗余存储,Namenode对存储的 元数据进行记录 。该架构可以概括为一个 抽象

    2024年02月16日
    浏览(29)
  • Hbase 系列教程:HBase 分布式文件存储系统解析

    作者:禅与计算机程序设计艺术 : Hbase 是 Apache 的开源 NoSQL 数据库项目之一。它是一个分布式、可扩展的、高性能、面向列的非关系型数据库。作为 Hadoop 大数据生态的一部分,Hbase 以高可用性、可伸缩性和水平可扩展性著称。它提供了一个列族模型(Column Family Model),能

    2024年02月05日
    浏览(27)
  • Hadoop的分布式文件存储系统HDFS组件的使用

    存储整个HDFS集群的元数据(metaData) —— 整个集群中存储的目录和文件的索引 管理整个HDFS集群 接收客户端的请求 负责节点的故障转移 存储数据,是以block块的形式进行数据的存放。 默认情况下block块的大小是128M。 blocksize大小的计算公式: 寻址时间:下载文件时找到文件

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包