常用的分布式文件系统

分布式文件系统对比与选型参考 MinIO文件存储系统被广泛应用于各种服务厂商,在中国大陆,包括阿里巴巴、腾讯、百度、中国联通、华为、中国移动等9000多家企业都也在使用MinIO产品。 阅读详情

1 分布式文件系统

1.1 什么是分布式文件系统?

分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。

1.2 分布式文件系统与一般文件系统对比

分布式文件系统一般文件系统存储数据的方式数据分散的存储在多台服务器上集中存放所有数据,在一台服务器上特点分布式网络存储系统采用可扩展的系统结构,利用多台服务器分担负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展,避免单点故障。传统的网络存储系统采用集中的服务器存放所有数据,到一定程度服务器会成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。

接着咱们了解下常用的分布式文件系统。

2 根据需求选择分布式文件系统

目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、腾讯云、百度云等等,对于中小型企业,如果不选择存储上云,或者为了帮节约成本,可自行部署文件系统。

本文主要介绍了根据需求来对常用分布式文件系统进行筛选。

2.1 需求说明

目前要找的分布式文件系统至少满足以下条件:

  • 频繁读写、从不修改、基本不删除
  • 能够存储图片、音频以及100MB以上的视频等文件
  • 非常稳定、高可用、可扩容、可运维部署、
  • 上手简单、易于维护、社区相对活跃

2.2 筛选流程

常用的分布式文件系统有:GFS、TFS、HDFS、MooseFs、FastDfs、MogileFs、GridFs、MinIO、SeaweedFS、GlusterFS、Ceph、GlusterFS等。

第一步:常见分布式文件系统比对

1、GFS(Google File System)
Google公司为满足公司需求而开发的基于Linux的可扩展的分布式文件系统,用于大型的、分布式的、对大数据进行访问和应用,成本低,应用于廉价的普通硬件上,但不开源,暂不考虑。

2、TFS(Taobao File System)
阿里巴巴为满足了淘宝对小文件存储的需求而开发的一个可扩展、高可用、高性能、面向互联网服务、开源的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,这个也暂不考虑。

3、HDFS(Hadoop Distributed File System)
Hadoop分布式文件系统,适合运行在通用硬件上做分布式存储和计算,因为它具有高容错性和可扩展性的特点,可部署在廉价的机器上,适合大数据的处理,在离线批量处理大数据上有先天的优势。
Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。

4、MooseFS
MooseFS 是来自波兰的开源且具备冗余容错功能的分布式 POSIX 文件系统,也是参照了 GFS 的架构,实现了绝大部分 POSIX 语义和 API,它支持通过FUSE方式将文件挂载操作,同时其提供的web管理界面非常方便查看当前的文件存储状态,对master服务器有单点依赖,用perl编写,用于中、大型文件应用,但性能相对较差,由于可能会实时访问所以暂不考虑。
备注:POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准

5、FastDFS
由淘宝的余庆先生所开发的一个开源分布式文件系统。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS搭建一套高性能的文件服务器集群提供文件上传、下载等服务。但是FastDFS部署有点麻烦,且它的SKD是不全的。

6、MogileFS
MogileFS是一套高效开源的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。支持多节点冗余,可实现自动的文件复制。不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过集群接口提供服务工作于应用层,没有特殊的组件要求。使用HTTP方式通信。

国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。

7、GridFS
MongoDB是一种知名的NoSql数据库,GridFS是MongoDB的一个内置功能,它用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),是文件存储的一种方式,但是它是存储在MonoDB的集合中。它可以直接利用已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都容易,且GridFS不产生磁盘碎片。

8、MinIO
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。它也是一个非常轻量的服务,可以很简单的和其他应用的结合。MinIO的特色在于简单、轻量级,对开发者友好,学习成本低,安装运维简单,开箱即用。

9、SeaweedFS
SeaweedFS是基于go语言开发高度可扩展开源的分布式存储系统,能存储数十亿文件(最终受制于你的硬盘大小)、并且速度快,内存占用小。上手使用比fastDFS要简单很多,自带Rest API。对于中小型文件效率非常高,但是单卷最大容量被程序限制到30G,建议存储文件以100MB以内为主。

10、Ceph
Ceph是Red Hat旗下一个成熟的分布式文件系统,而且还是一个有企业级功能的对象存储生态环境。该系统具备高性能、高可用性、高可扩展性、实时存储性等特点。虽然ceph很强大,但是学习成本高、安装运维复杂。Ceph用C++编写,存储容量可轻松达到PB级别。

11、GlusterFS
GlusterFS 是由美国的 Gluster 公司开发的 POSIX 分布式文件系统(以 GPL 开源),它主要应用在集群系统中,具有高扩展性、高可用性、高性能、可横向扩展等特点,并且其没有元数据服务器的设计,让整个服务没有单点故障的隐患。该系统主要是为中大型文件设计的,存储容量可轻松达到PB。它存在扩容缩容影响服务器较多、遍历目录下文件耗时、小文件性能较差的缺点。

第二步:功能分类

  • 适合做通用文件系统的有:Ceph、MooseFS、MinIO;
  • 适合做中小文件存储的文件系统有:Ceph、FastDFS、MinIO、SeaweedFS;
  • 适合做大文件存储的文件系统有:HDFS、MinIO、Ceph、GridFS;
  • 轻量级文件系统有:FastDFS、MinIO、SeaweedFS;
  • 简单易用,用户活跃的文件系统有:HDFS、FastDFS、MinIO;

综上:Ceph目前不够成熟稳定,官方也明确指出不要把ceph用在生产环境中,暂不考虑;
经初步筛选剩下的文件系统有:HDFS、FastDFS、MinIO、GridFS。

第三步:分布式文件系统再次比对

  • MinIO:学习成本低,部署容易,适合存储大容量非结构化的数据,且有详细的中文文档。
  • FastDFS:功能精简,支持在线扩容、冗余备份,部分支持跨集群同步,不存在单点故障,性能较好。但是不支持FUSE挂载和POSIX访问接口,且学习成本相对MinIO较高,且部署也相对比较复杂点。
  • HDFS:适合批量数据处理.可以部署在廉价的机器上。可以部署在廉价的机器上,但是不适合大量小文件,通过牺牲响应延时来换取高的吞吐量。
  • GridFS:能够简化技术栈,如果已经使用了MongoDB,那么使用GridFS,就不需要其它独立的存储工具了(但是我们当前没引入MongoDB),不过性能不如直接访问文件系统快,而且无法修改文档。如果要修改GridFS里面的文档,只能是先删除再添加(对我们当前业务没有影响)

2.3 综述

目前提供的建议选型参考为MinIO或FastDFS,
如果想减少技术栈的话可以考虑HDFS或GridFS,
如果不在乎响应时间可以考虑HDFS。

分布式文件系统(DFS)-- 详解 分布式文件系统(Distributed File System,DFS)是。用户无需关注或了解实际数据存储的位置和方法,因为分布式文件系统会自动处理这些复杂的过程。 阅读详情

相关推荐

分布式文件系统

要理解分布式文件系统首先了解什么是文件系统。查阅百度百科:文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件。下图指示了文件系统所处的位置:常见的文件系统:FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等。现在有个问题,一此短视频平台拥有大量的视频、图片,这些视频文件、图片文件该如何存储呢?如何存储可以满足互联网上海量用户的浏览。今天讲的分布式文件系统就是海量用户查阅海量文件的方案。

Relievedz的博客 1802

9种分布式文件系统

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),也就是Unix下应用程序共同遵循的一种规范。支持POSIX的应用程序意味着在各个Unix系统间提供了跨平台运行的支持。

爱琴孩的博客 4196

matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真

:瓷砖抛 光过程 建模与仿真朱 成 就(广 东工业大学 机 电工程 学院, 广东广州 )摘要 :瓷砖的抛磨影响 因素众 多 ,实际磨削加工时容易出现漏抛 、返抛现象 。对陶瓷抛光机磨头进行运动学分析 ,并基于不 同粒度号 的磨 粒在一定压力下的加工深度模型 ,探讨抛光机磨 头转 速 、横梁摆动频率 、传送速度对瓷砖抛光加工表 面均匀性 的影响,然 后结合 磨削机理使 用 对陶瓷抛光过程进行仿真 ...

weixin_36331058的博客 747

分布式文件系统HDFS

兼容廉价的硬件设备流数据访问:一次写入、多次读取大数据集简单的文件模型强大的跨平台兼容性不适合低延迟数据访问:几十ms范围的,HDFS以数据以数据呑吐量为目标,可能会提高时间的延迟。无法高效存储大量小文件:namenode将文件系统的元数据保存在内存中,因此文件系统存储的文件总数有限。不支持多用户写入及任意修改文件HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为。

qq_51580006的博客 3751

数据库崩溃恢复机制:REDO日志与UNDO日志详解

在数据库管理系统中,事务的持久性和一致性是至关重要的。为了保证在系统崩溃或发生故障时数据不会丢失,数据库引入了恢复机制。其中,REDO日志和UNDO日志是两种关键的恢复技术。本文将详细描述这两种日志的作用、工作原理以及它们在数据库崩溃恢复中的应用。

My_wife_QBL的博客 1411

Linux内存压力测试工具【memtester】详且精

对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。

weixin_44118923的博客 1万+

分布式文件系统HDFS&常用命令

HDFS支持大文件存储,典型的文件在GB甚至TB级别,可以支持数以千万计的大规模数据集。创建文件在/tmp目录中创建空文件HelloWorld.txthdfsdfs-touchz/tmp/HelloWorld.txt。由于HDFS支持大文件存储,对于大文件来说,移动计算比移动数据的代价要低。查看hdfs中目录/user/zhangs中文件占用磁盘大小hdfsdfs-du-h/user/zhangs。查看某文本文件的内容hdfsdfs-cat/tmp/index.html。......

weixin_52464817的博客 701

关于LIO-SAM编译时出现错误 /usr/bin/ld: 找不到 -lBoost::timer

关于LIO-SAM编译时出现错误: 下载LIO-SAM代码 进入LIO-SAM文件夹,通过以下代码编译: mkdir build cd build cmake .. make 报错: /usr/bin/ld: 找不到 -lBoost::timer collect2: error: ld returned 1 exit status CMakeFiles/lio_sam_imuPreintegration.dir/build.make:759: recipe for target 'devel/lib/li

wwtx的博客 3648

分布式文件系统HDFS的几个常用命令

分布式文件系统HDFS常用命令 1:查看所有命令 hdfs dfs 2:查看目录下的文件列表 hdfs dfs -ls / 3:查看某文本文件的内容 hdfs dfs -cat /tmp/yy.txt 4:创建目录 hdfs dfs -mkdir /tmp/new 5:查看目录 hdfs dfs -ls /tmp | grep new 6:删除目录 hdfs dfs -rm -r /tmp...

W_J_Q的博客 1202

Android车载蓝牙开发全攻略:从基础到高级优化

本文系统介绍了Android车载蓝牙开发的核心技术与实践指南。文章首先阐述了蓝牙在智能汽车中的关键作用,包括免提通话、音频流媒体等应用场景。随后详细解析了蓝牙协议基础,重点介绍了HFP、A2DP等车载常用协议。开发实战部分提供了设备发现、连接、数据传输的完整代码示例,并融入多线程和内存优化技巧。通过真实车载案例,展示了启动时间、流畅度和资源使用的优化策略。最后针对面试需求,提供了专业的技术问答,涵盖蓝牙开发全流程。全文紧密结合Android车载开发职位要求,为开发者提供了一套完整的蓝牙技术解决方案。

郑伟强dev的专栏 118

【异常】解决 Claude Code 及第三方插件提示 “API Error: 404“ 的配置修复指南

在使用 Claude 相关的 CLI 工具(如)或 IDE 插件进行开发辅助时,配置错误的模型参数是导致连接失败的常见原因。本文将针对这一典型报错进行复盘与解决。

奶爸的编程之路,也就一周冷个三天 7747

常用分布式文件系统

1 分布式文件系统 1.1 什么是分布式文件系统? 分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。 1.2 分布式文件系统与一般文件系统对比 分布式文件系统 一

明静致远 2238

OpenAI Error: 403 Country, region, or territory not supported [Python]

从OpenAI的API服务中获取数据时,由于你所在的国家、地区或领土不被支持,因此请求被拒绝了

suiusoar 5668

Java常用分布式文件系统调研

1.背景简介 应对“地图编辑系统”轨迹层的开发需求,亟需合适的文件系统对图片文件进行管理。目前调研文件系统需要满足以下几点: 1)图片量级非常大; 2)图片大小为4MB左右。 3)便于快速查询。 4)分布式部署和存储文件。 5)数据查询能做到负载均衡。 6)对开发人员友好。 7)拓展方便。 2.适用范围 3.术语定义 4.参考文档 5.常用分布式文件系统 5.1FastDFS 5.1.1概述 FastDFS是一款开源的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,

yuezheyue123的博客 1171

YOLOv8训练流程-原理解析[目标检测理论篇]

本篇文章主要介绍了YOLOv8训练的流程,主要介绍了Task Aligned Assigner正负样本匹配策略以及YOLOv8的损失计算。

ice 4516

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hadoop分布式文件系统常用配置参数

文件系统:          hdfs fsck /   -files -blocks  显示文件的块信息 hadoop-env.sh  (脚本中要用到的环境变量,以运行hadoop)       JAVA_HOME   设置java环境变量,例如export JAVA_HOME=/usr/software/jdk1.8.0_65       HADOOP_HEAPSIZE  设置hadoop为各...

Neo_Lee的博客 1570

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

分布式文件系统有哪些_常用的"分布式文件系统"有哪些?

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,它的设计是基于客户端/服务器模式。 图片来源于网络如上图所示,应用服务器和文件服务器分别存在于网络当中,而这里的网络,可以是统一子网,也可以是不同子网。服务器对文件的存取,均在网...

weixin_39860349的博客 2652

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

hadoop分布式文件系统常用命令

搭建完hadoop后,会生成一个hdfs的分布式文件系统。HDFS是一个逻辑上的文件系统,它存储在Hadoop集群的多个节点上,而不是单个机器的本地磁盘上。1 这些知识在大数据学习中应该算是基础中的基础了,理解不了这些,在部署大数据相关组件时,会遇到非常大的坑;2 区别记住一句话,相互独立,命令相似;

花菜回锅肉的博客 953

HDFS 常用基础命令详解——快速上手分布式文件系统

本文面向刚接触 Hadoop HDFS(Hadoop 分布式文件系统)的读者,结合 优快云 博客风格,系统梳理最常用的 HDFS 客户端命令,并配以示例和注意事项,帮助你在开发和运维中快速掌握 HDFS 的文件管理能力。

m0_73579990的博客 1009

分布式文件系统HDFS常用操作与设计原理

1.HDFS常用操作HDFS文件操作有2种方式:命令行方式和API方式我们以Hadoop自带的wordcout实例来演示HDFS分布式文件系统的命令行方式常用操作。[liuqingjie@master ~]$ mkdir input[liuqingjie@master ~]$ cd input/[liuqingjie@master input]$ echo "hello wo...

weixin_34321753的博客 140

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

所有文件的元数据不存储在Master节点,而是分散存储在Volume(逻辑卷,存储数据的逻辑结构)中,Master节点只保存卷 ID到卷服务器的映射,这样一来,Master节点的查询压力就被分散到volume节点了。对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略。minio是一款有明显优缺点的产品,在我们的需求背景下,minio不能够很好的满足,特别是不能够支持我们10亿+对象存储需求,而且在现有的架构设计下,也不太好改造,然后通过与社区共建的方式来满足我们海量小文件的需求。

gaozhenzhai的博客 5794

Java API 实现对分布式文件系统(HDFS)的常用命令操作!

Java API 实现对分布式文件系统(HDFS)的常用命令操作! 目录运行环境1.hdfs的目录下的文件及其目录查看2.hdfs的目录创建3.hdfs的目录删除or文件删除4.hdfs文件上传,本地到hdfs5.hdfs文件下载,hdfs到本地6.将本地的数据剪切到hdfs7.将hdfs上的数据剪切到本地 运行环境 创建maven工程进行的java代码编写,需要引入hadoop-client依赖...

Ganxiang 1543

Hadoop HDFS分布式文件系统 常用命令汇总

引言:我们维护hadoop系统的时候,必不可少需要对HDFS分布式文件系统做操作,例如拷贝一个文件/目录,查看HDFS文件系统目录下的内容,删除HDFS文件系统中的内容(文件/目录),还有HDFS管理信息,单独启动停止 name...

congnangwu6519的博客 202

Hadoop分布式文件系统HDFS介绍与使用

分布式文件系统HDFS介绍与使用

J326080的博客 1161

分布式文件系统概念

基础知识 什么是分布式文件系统   分布式文件系统 distributed file system 是指文件系统管理的物理存储资源不一定直接链接在本地节点上,而是通过计算机网络与节点相连   分布式文件系统的设计基于客户机/服务器模式   一个典型的网络可能包括多个供多用户访问的服务器   对等特性允许一些系统扮演客户机和服务器的双重角色 分布式文件系统的特点 分布式...

dengzhaqu6312的博客 483
上一篇: Java创建进程
下一篇: JDK版本选择
xinyuan_java
博客等级 码龄12年 181粉丝 83原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值