爱站网是什么意思,年度关键词,渭南网站建设与维护,祥云县外卖哪个网站盘点分布式文件存储系统 在项目的数据存储中#xff0c;结构化数据通常采用关系型数据库#xff0c;非结构化数据#xff08;文件#xff09;的存储就有很多种方式#xff0c;服务器本地存储、Nas挂载、ftp等等#xff0c;今天就来盘点一下#xff0c;分布式文件存储系统…盘点分布式文件存储系统 在项目的数据存储中结构化数据通常采用关系型数据库非结构化数据文件的存储就有很多种方式服务器本地存储、Nas挂载、ftp等等今天就来盘点一下分布式文件存储系统。 一、分布式存储简介
1、什么是分布式存储
在开始介绍分布式存储之前先了解一下非分布式的存储方案。
在单机时代将文件直接存储在服务部署的服务器上——
直连存储DAS存储和数据直连拓展性、灵活性差。
为了扩展将文件和服务分离通过网络连接——
中心化存储NAS、SAN设备类型丰富通过网络互连具有一定的拓展性但是受到控制器能力限制拓展能力有限。同时设备到了生命周期要进行更换数据迁移需要耗费大量的时间和精力。 **分布式存储**通过网络使用企业中的每台机器上的磁盘空间并将这些分散的存储资源构成一个虚拟的存储设备数据分散的存储在企业的各个角落。 2、分布式存储的优势
可扩展分布式存储系统可以扩展到数百甚至数千个这样的集群大小并且系统的整体性能可以线性增长。
高可用性在分布式文件系统中高可用性包含两层一是整个文件系统的可用性二是数据的完整和一致性
低成本分布式存储系统的自动容错和自动负载平衡允许在成本较低服务器上构建分布式存储系统。此外线性可扩展性还能够增加和降低服务器的成本。
弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源而不需要中断系统运行
二、主流分布式文件存储系统
目前主流的分布式文件系统有GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等。
1、GFSGoogle File System
? Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。尽管Google公布了该系统的一些技术细节但Google并没有将该系统的软件部分作为开源软件发布。
2、HDFSHadoop Distributed File System
? HDFSHadoop Distributed File System是 Hadoop 项目的一个子项目。是 Hadoop 的核心组件之一 Hadoop 非常适于存储大型数据 (比如 TB 和 PB)其就是使用 HDFS 作为存储系统. HDFS 使用多台计算机存储文件并且提供统一的访问接口像是访问一个普通文件系统一样使用分布式文件系统。 3、TFSTaobao FileSystem
? TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统主要针对海量的非结构化数据它构筑在普通的Linux机器 集群上可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储通常文件大小不超过1M满足了淘宝对小文件存储的需求被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构可将文件名映射到文件的物理地址简化 了文件的访问流程一定程度上为TFS提供了良好的读写性能。
4、Lustre
Lustre是一个大规模的、安全可靠的具备高可用性的集群文件系统它是由SUN公司开发和维护的。该项目主要的目的就是开发下一代的集群文件系统可以支持超过10000个节点数以PB的数据量存储系统。目前Lustre已经运用在一些领域例如HP SFS产品等。
5、 MooseFS
MooseFS是一款相对小众的分布式文件系统不需要修改上层应用接口即可直接使用支持FUSE的操作方式部署简单并提供Web界面的方式进行管理与监控同其他分布式操作系统一样支持在线扩容并进行横向扩展。MooseFS还具有可找回误操作删除的文件相当于一个回收站方便业务进行定制同时MooseFS对于海量小文件的读写要比大文件读写的效率高的多。
但MooseFS的缺点同样明显MFS的主备架构情况类似于MySQL的主从复制从可以扩展主却不容易扩展。短期的对策就是按照业务来做切分随着MFS体系架构中存储文件的总数上升Master Server对内存的需求量会不断增大。并且对于其单点问题官方自带的是把数据信息从Master Server同步到Metalogger Server上Master Server一旦出问题Metalogger Server可以恢复升级为Master Server但是需要恢复时间。目前也可以通过第三方的高可用方案heartbeatdrbdmoosefs来解决 Master Server 的单点问题。
6、MogileFS
由memcahed的开发公司danga一款perl开发的产品目前国内使用mogielFS的有图片托管网站yupoo等。MogileFS是一套高效的文件自动备份组件由Six Apart开发广泛应用在包括LiveJournal等web2.0站点上。
7. FastDFS
是一款类似Google FS的开源分布式文件系统是纯C语言开发的。FastDFS是一个开源的轻量级分布式文件系统它对文件进行管理功能包括文件存储、文件同步、文件访问文件上传、文件下载等解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务如相册网站、视频网站等等。
8、GlusterFS
开源分布式横向扩展文件系统可以根据存储需求快速调配存储内含丰富的自动故障转移功能且摈弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统具有可扩展性、高性能、高可用性等特点。gluster于2011年10月7日被Red Hat收购。
9、 GridFS
MongoDB是知名的NoSQL数据库GridFS是MongoDB的一个内置功能它提供一组文件操作的API以利用MongoDB存储文件GridFS的基本原理是将文件保存在两个Collection中一个保存文件索引一个保存文件内容文件内容按一定大小分成若干块每一块存在一个Document中这种方法不仅提供了文件存储还提供了对文件相关的一些附加属性比如MD5值文件名等等的存储。文件在GridFS中会按4MB为单位进行分块存储。 三、分布式文件系统的对比
1、整体对比
文件系统开发者开发语言开源协议易用性适用场景特性缺点GFSGoogle不开源HDFSApacheJavaApache安装简单官方文档专业化存储非常大的文件大数据批量读写吞吐量高一次写入多次读取顺序读写难以满足毫秒级别的低延时数据访问不支持多用户并发写相同文件不适用于大量小文件Ceph加州大学圣克鲁兹分校Sage WeilCLGPL安装简单官方文档专业化单集群的大中小文件分布式没有单点依赖用C编写性能较好基于不成熟的btrfs自身也不够成熟稳定不推荐在生产环境使用TFSAlibabaCGPL V2安装复杂官方文档少跨集群的小文件针对小文件量身定做随机IO性能比较高实现了软RAID增强系统的并发处理能力及数据容错恢复能力支持主备热倒换提升系统的可用性支持主从集群部署从集群主要提供读/备功能不适合大文件的存储不支持POSIX通用性较低不支持自定义目录结构与文件权限控制通过API下载存在单点的性能瓶颈官方文档少学习成本高LustreSUNCGPL复杂而且严重依赖内核需要重新编译内核大文件读写企业级产品非常庞大对内核和ext3深度依赖MooseFSCore Sp. z o.o.CGPL V3安装简单官方文档多且提供Web界面的方式进行管理与监控大量小文件读写比较轻量级用perl编写国内用的人比较多对master服务器有单点依赖性能相对较差MogileFSDanga InteractivePerlGPL主要用在web领域处理海量小图片key-value型元文件系统效率相比mooseFS高很多不支持FUSEFastDFS国内开发者余庆CGPL V3安装简单社区相对活跃单集群的中小文件系统无需支持POSIX降低了系统的复杂度处理效率更高实现了软RAID增强系统的并发处理能力及数据容错恢复能力支持主从文件支持自定义扩展名主备Tracker服务增强系统的可用性不支持断点续传不适合大文件存储不支持POSIX通用性较低对跨公网的文件同步存在较大延迟需要应用做相应的容错策略同步机制不支持文件正确性校验通过API下载存在单点的性能瓶颈GlusterFSZ RESEARCHCGPL V3安装简单官方文档专业化适合大文件小文件性能还存在很大优化空间无元数据服务器堆栈式架构(基本功能模块可以进行堆栈式组合实现强大功能)具有线性横向扩展能力比mooseFS庞大由于没有元数据服务器因此增加了客户端的负载占用相当的CPU和内存但遍历文件目录时则实现较为复杂和低效需要搜索所有的存储节点不建议使用较深的路径GridFSMongoDBC安装简单通常用来处理大文件超过16M可以访问部分文件而不用向内存中加载全部文件从而保持高性能文件和元数据自动同步
2、 特性对比
文件系统数据存储方式集群节点通讯协议专用元数据存储点在线扩容冗余备份单点故障跨集群同步FUSE挂载访问接口HDFS文件私有协议TCP占用MDS支持存在不支持支持不支持POSIXCeph对象/文件/块私有协议TCP占用MDS支持支持存在不支持支持POSIXLustre对象私有协议TCP/ RDAM远程直接访问内存双MDS支持不支持存在未知支持POSIX/MPIMooseFS块私有协议TCP占用MFS支持支持存在不支持支持POSIXMogileFS文件HTTP占用DB支持不支持存在不支持不支持不支持POSIXFastDFS文件/块私有协议TCP无支持支持不存在部分支持不支持不支持POSIXGlusterFS文件/块私有协议TCP/RDAM远程直接访问内存无支持支持不存在支持支持POSIXTFS文件私有协议TCP占用NS支持支持存在支持未知不支持POSIX什么是POSIX POSIX表示可移植操作系统接口Portable Operating System Interface of UNIX缩写为 POSIX 也就是Unix下应用程序共同遵循的一种规范。支持POSIX的应用程序意味着在各个Unix系统间提供了跨平台运行的支持。 四、选型参考
适合做通用文件系统的有CephLustreMooseFSGlusterFS适合做小文件存储的文件系统有CephMooseFSMogileFSFastDFSTFS适合做大文件存储的文件系统有HDFSCephLustreGlusterFSGridFS轻量级文件系统有MooseFSFastDFS简单易用用户数量活跃的文件系统有MooseFSMogileFSFastDFSGlusterFS支持FUSE挂载的文件系统有HDFSCephLustreMooseFSGlusterFS。 分布式文件存储系统简介
在分布式存储技术体系当中分布式文件存储是其中的分类之一也是大数据架构当中常常用到的。得益于Hadoop的高人气Hadoop原生的HDFS分布式文件系统也广泛为人所知。但是分布式文件存储系统并非只有HDFS。今天的大数据开发分享我们就主要来讲讲常见的分布式文件存储系统。
分布式文件系统可以说是分布式系统下的一个子集这里我们选取市场应用比较广泛的几款产品HDFS、Ceph、FastDFS以及MooseFS来做简单的分析—— HDFS
如上所说HDFS是分布式文件系统当中人气非常高的一个。基于Hadoop基础架构HDFS天然就有很好的优势尤其是面对大规模离线批处理任务地位难以撼动。
HDFS可以为各类分布式计算框架如Spark、MapReduce等提供海量数据存储服务同时HBase、Hive底层存储也依赖于HDFS。与Hadoop生态的紧密联系也使其稳稳占据市场主流地位。
优点
高容错性数据自动保存多个副本副本丢失后自动恢复
适合批处理移动计算而非数据。数据位置暴露给计算框架
适合大数据处理GB,TB,甚至PB级数据。百万规模以上文件数量。10K节点规模。
流式文件访问一次性写入多次读取。保证数据一致性。
可构建在廉价机器上通过多副本提高可靠性。提供容错和恢复机制。
缺点
不适合低延迟数据访问场景比如毫秒级低延迟与高吞吐率
不适合小文件存取场景:占用NameNode大量内存。寻道时间超过读取时间。
不适合并发写入文件随机修改场景一个文件只能有一个写者。仅支持append
不符合posix语义需要通过SDK来读写操作。对java支持良好其他语言一般
Ceph
企业级的存储需求通常分为块存储、文件存储和对象存储而Ceph能够同时满足这三种需求。Ceph提供三大存储接口能够将企业中的三种存储需求统一汇总到一个存储系统中并提供分布式、横向扩展高度可靠性的存储具备高可用性、高性能及可扩展等特点。
优点
支持对象存储OSD集群通过CRUSH算法完成文件动态定位处理效率更高
符合posix语义支持通过FUSE方式挂载降低客户端的开发成本通用性高
支持分布式的MDS/MON无单点故障
强大的容错处理和自愈能力
支持在线扩容和冗余备份增强系统的可靠性
缺点
目前处于试验阶段系统稳定性有待考究
部署和运维较复杂集群管理工具较少
FastDFS
FastDFS是以C语言开发的一项开源轻量级分布式文件系统提供文件存储、文件同步、文件访问文件上传/下载等通用文件管理操作尤其适合以文件为载体的在线服务如图片网站视频网站等。追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统称作分布式文件存储服务更为合适。
优点
支持在线扩容机制增强系统的可扩展性
实现了软RAID增强系统的并发处理能力及数据容错恢复能力
支持主从文件支持自定义扩展名
主备Tracker服务增强系统的可用性
缺点
不支持POSIX通用接口访问通用性较低
对跨公网的文件同步存在较大延迟需要应用做相应的容错策略
同步机制不支持文件正确性校验降低了系统的可用性
通过API下载存在单点的性能瓶颈
MooseFS
MooseFS是在HDFS之后出现的它也是类似的MDSOSS架构区别于HDFS的是MooseFS没有对运行其上的业务做假设它没有假设业务是大文件或海量小文件也就是说MooseFS的定位是像ext4、xfs、NTFS等单机文件系统一样的通用型文件存储。
优点
扩容成本低、支持在线扩容不影响业务体系架构可伸缩性极强
支持POSIX通用接口访问支持通过FUSE方式挂载降低客户端的开发成本通用性高
文件对象高可用可设置任意的文件冗余程度提供比Raid 10更高的冗余级别
提供系统负载将数据读写分配到所有的服务器上加速读写性能
实现了软RAID增强系统的并发处理能力及数据容错恢复能力
数据恢复比较容易增强系统的可用性。有回收站功能方便业务定制
缺点
Master Server的单点解决方案的健壮性。Master Server一旦出问题Metalogger Server可以恢复升级为Master Server但是需要恢复时间
Master Server本身的性能瓶颈。MFS的主备架构情况类似于MySQL的主从复制从可以扩展主却不容易扩展
随着MFS体系架构中存储文件的总数上升Master Server对内存的需求量会不断增大
MinIO
什么是MinIO
根据官方定义
MinIO 是在 Apache License v2.0 下发布的对象存储服务器。 它与 Amazon S3 云存储服务兼容。 它最适合存储非结构化数据如照片视频日志文件备份和容器/ VM 映像。 对象的大小可以从几 KB 到最大 5TB。MinIO 服务器足够轻可以与应用程序堆栈捆绑在一起类似于 NodeJSRedis 和 MySQL。一种高性能的分布式对象存储服务器用于大型数据基础设施。它是机器学习和其他大数 据工作负载下 Hadoop HDFS 的理想 s3 兼容替代品。
为什么需要MinIO
Minio 有良好的存储机制Minio 有很好纠删码的算法与擦除编码算法拥有RS code 编码数据恢复原理公司做强做大时数据的拥有重要性对数据治理与大数据分析做准备。搭建自己的一套文件系统服务,对文件数据进行安全保护。拥有自己的平台不限于其他方限制。
MinIO 和其他OSS存储解决方案各有什么优缺点
这里主要针对Ceph、Minio、FastDFS 热门的存储解决方案进行比较。
Ceph
优点
成熟红帽继子ceph创始人已经加入红帽国内有所谓的ceph中国社区私人机构不活跃文档有滞后而且没有更新的迹象。从git上提交者来看中国有几家公司的程序员在提交代码星辰天合easystack, 腾讯、阿里基于ceph在做云存储但是在开源社区中不活跃阿里一位叫liupan的有参与功能强大支持数千节点支持动态增加节点自动平衡数据分布。TODO需要多长时间add node时是否可以不间断运行可配置性强可针对不同场景进行调优
缺点 学习成本高安装运维复杂。
Minio
优点
学习成本低安装运维简单开箱即用目前minio论坛推广给力有问必答有java客户端、js客户端数据保护分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。分布式Minio至少需要4个硬盘使用分布式Minio自动引入了纠删码功能。一致性Minio在分布式和单机模式下所有读写操作都严格遵守read-after-write一致性模型。
缺点
社区不够成熟业界参考资料较少不支持动态增加节点minio创始人的设计理念就是动态增加节点太复杂后续会采用其它方案来支持扩容。
FastDFS
fastdfs是阿里余庆做的一个个人项目在一些互联网创业公司中有应用没有官网不活跃6个contributors。
让我放弃FastDFS拥抱MinIO的8个瞬间
https://blog.csdn.net/qq_43842093/article/details/121867111