本文目录一览:
- 1、在大数量级的数据存储上,比较靠谱的分布式文件存储有哪些?
- 2、什么是分布式存储系统?
- 3、当前主流分布式文件系统有哪些?各有什么优缺点?
- 4、基于mogileFS搭建分布式文件系统--海量小文件的存储利器
- 5、hdfs等分布式文件系统真的会存储数据吗?
- 6、大数据环境下分布式文件系统有哪些特点,相应的优化思路是什么
在大数量级的数据存储上,比较靠谱的分布式文件存储有哪些?
Ceph,GFS,HDFS。
一、 Ceph
Ceph最早起源于Sage就读博士期间的工作、成果于2004年发表,并随后贡献给开源社区。经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。
二、 GFS
GFS是google的分布式文件存储系统,是专为存储海量搜索数据而设计的,2003年提出,是闭源的分布式文件系统。适用于大量的顺序读取和顺序追加,如大文件的读写。注重大文件的持续稳定带宽,而不是单次读写的延迟。-分布式文件系统可以存储大文件系统
三、 HDFS
HDFS(Hadoop Distributed File System),是一个适合运行在通用硬件(commodity hardware)上的分布式文件系统,是Hadoop的核心子项目,是基于流数据模式访问和处理超大文件的需求而开发的。该系统仿效了谷歌文件系统(GFS),是GFS的一个简化和开源版本。【感兴趣的话点击此处,了解一下】-分布式文件系统可以存储大文件系统
小编建议可以到亿万克官网了解一下,亿万克将持续走在创新第一线,不断为客户提供更加优质服务,为国家信息安全和新型数据中心建设保驾护航,助力国家碳中和碳达峰步入新篇章。
什么是分布式存储系统?
分布式存储系统
定义
分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务
特性
可扩展
低成本
高性能
易用
挑战
分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。
数据分布
一致性
容错
负载均衡
事务与并发控制
易用性
压缩/解压缩
分类
非结构化数据,一般的文档
结构化数据, 存储在关系数据库中
半结构化数据,HTML文档
不同的分布式存储系统适合处理不同类型的数据:
分布式文件系统
非结构化数据,这类数据以对象的形式组织,不同对象之间没有关联,这样的数据一般称为Blob(二进制大对象)数据
典型的有Facebook Haystack 以及 Taobao File System
另外,分布式文件系统也常作为分布式表格系统以及分布式数据库的底层存储,如谷歌的GFS可以作为分布式表格系统Google Bigtable 的底层存储,Amazon的EBS(弹性存储块)系统可以作为分布式数据库(Amazon RDS)的底层存储-分布式文件系统可以存储大文件系统
总体上看,分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件
分布式键值系统
较简单的半结构化数据,只提供主键的CRUD(创建、读取、更新、删除)
典型的有Amazon Dynamo 以及 Taobao Tair
分布式表格系统
较复杂的半结构化数据,不仅支持CRUD,而且支持扫描某个主键范围
以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能
典型的有Google Bigtable 以及 Megastore,Microsoft Azure Table Storage,Amazon DynamoDB等
分布式数据库
存储结构化数据,一般是由单机关系数据库扩展而来
典型的包括MySQL数据库分片集群、Amazon RDS以及Microsoft SQL Azure
当前主流分布式文件系统有哪些?各有什么优缺点?
目前几个主流的分布式文件系统除GPFS外,还有PVFS、Lustre、PanFS、GoogleFS等。
1.PVFS(Parallel Virtual File System)项目是Clemson大学为了运行Linux集群而创建的一个开源项目,目前PVFS还存在以下不足:
1)单一管理节点:只有一个管理节点来管理元数据,当集群系统达到一定的规模之后,管理节点将可能出现过度繁忙的情况,这时管理节点将成为系统瓶颈;
2)对数据的存储缺乏容错机制:当某一I/O节点无法工作时,数据将出现不可用的情况;
3)静态配置:对PVFS的配置只能在启动前进行,一旦系统运行则不可再更改原先的配置。
2.Lustre文件系统是一个基于对象存储的分布式文件系统,此项目于1999年在Carnegie Mellon University启动,Lustre也是一个开源项目。它只有两个元数据管理节点,同PVFS类似,当系统达到一定的规模之后,管理节点会成为Lustre系统中的瓶颈。-分布式文件系统可以存储大文件系统
3.PanFS(Panasas File System)是Panasas公司用于管理自己的集群存储系统的分布式文件系统。
4.GoogleFS(Google File System)是Google公司为了满足公司内部的数据处理需要而设计的一套分布式文件系统。
5.相对其它的文件系统,GPFS的主要优点有以下三点:
1)使用分布式锁管理和大数据块策略支持更大规模的集群系统,文件系统的令牌管理器为块、inode、属性和目录项建立细粒度的锁,第一个获得锁的客户将负责维护相应共享对象的一致性管理,这减少了元数据服务器的负担;-分布式文件系统可以存储大文件系统
2)拥有多个元数据服务器,元数据也是分布式,使得元数据的管理不再是系统瓶颈;
3)令牌管理以字节作为锁的最小单位,也就是说除非两个请求访问的是同一文件的同一字节数据,对于数据的访问请求永远不会冲突.
基于mogileFS搭建分布式文件系统--海量小文件的存储利器
1.简介
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。-分布式文件系统可以存储大文件系统
当下我们处在一个互联网飞速发展的信息 社会 ,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化。在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集、数据存储、数据搜索、数据共享、数据传输、数据分析、数据可视化等一系列问题。-分布式文件系统可以存储大文件系统
传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制、横向扩展受交换设备限制、节点受文件系统限制。
然而分布式存储的出现在一定程度上有效的缓解了这一问题,之所以称之为缓解是因为分布式存储在面对海量数据存储时也并非十全十美毫无压力,依然存在的难点与挑战例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。-分布式文件系统可以存储大文件系统
2.分布式文件系统的一些解决方案
Google Filesystem适合存储海量大个文件,元数据存储与内存中
HDFS(Hadoop Filesystem)GFS的山寨版,适合存储大量大个文件
TFS(Taobao Filesystem)淘宝的文件系统,在名称节点上将元数据存储与关系数据库中,文件数量不在受限于名称节点的内容空间,可以存储海量小文件LustreOracle开发的企业级分布式系统,较重量级MooseFS基于FUSE的格式,可以进行挂载使用MogileFS-分布式文件系统可以存储大文件系统
擅长存储海量的小数据,元数据存储与关系型数据库中
1.简介
MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。-分布式文件系统可以存储大文件系统
目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个.
国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 土豆, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。
2.MogileFS特性
1) 应用层提供服务,不需要使用核心组件
2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
3)自动复制文件,复制文件的最小单位不是文件,而是class
4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信
5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现
6)不用共享任何数据
3.MogileFS的组成
1)Tracker--跟踪器,调度器
MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等.这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed), 包括将请求负载平衡到多个"query workers"中,然后让 mogilefs的子进程去处理.-分布式文件系统可以存储大文件系统
mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡.trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,-分布式文件系统可以存储大文件系统
tarcker的配置文件为/etc/mogilefs/mogilefsd.conf,监听在TCP的7001端口
2)Database--数据库部分
主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
3)mogstored--存储节点
数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何 WebDAV 服务器都可以, 不过推荐使用 mogstored . mogilefsd可以配置到两个机器上使用不同端口… mogstored 来进行所有的 DAV 操作和流量,IO监测, 并且你自己选择的HTTP服务器(默认为 perlbal)用来做 GET 操作给客户端提供文件.-分布式文件系统可以存储大文件系统
典型的应用是一个挂载点有一个大容量的SATA磁盘. 只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点.当然还需要mogadm这个工具增加这台机器到Cluster中.
配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口
4.基本工作流程
应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.
tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。
应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).
应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.
tracker 将该名称和域命的名空间关联 (通过数据库来做的)
tracker, 在后台, 开始复制文件,知道他满足该文件类别设定的复制规则
然后,应用程序通过 “get_paths” 请求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情况回复(在内部经过 database/memcache/etc 等的一些抉择处理), 该文件可用的完整 URLs地址列表.-分布式文件系统可以存储大文件系统
应用程序然后按顺序尝试这些URL地址. (tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做..)
1.拓扑图
说明:1.用户通过URL访问前端的nginx
2.nginx根据特定的挑选算法,挑选出后端一台tracker来响应nginx请求
3.tracker通过查找database数据库,获取到要访问的URL的值,并返回给nginx
4.nginx通过返回的值及某种挑选算法挑选一台mogstored发起请求
5.mogstored将结果返回给nginx
6.nginx构建响应报文返回给客户端
2.ip规划
角色运行软件ip地址反向代理nginx192.168.1.201存储节点与调度节点1
mogilefs192.168.1.202存储节点与调度节点2
mogilefs192.168.1.203数据库节点
MariaDB192.168.1.204
3.数据库的安装操作并为授权
关于数据库的编译安装,请参照本人相关博文,本处将不再累赘,本处使用的为yum源的安装方式安装mysql
4.安装mogilefs. 安装mogilefs,可以使用yum安装,也可以使用编译安装,本处通过yum安装
5.初始化数据库
可以看到在数据库中创建了一些表
6.修改配置文件,启动服务
7.配置mogilefs
添加存储主机
添加存储设备
添加域
添加class
8.配置192.168.1.203的mogilefs 。切记不要初始化数据库,配置应该与192.168.1.202一样
9.尝试上传数据,获取数据,客户端读取数据
上传数据,在任何一个节点上传都可以
获取数据
客户端查看数据
我们可以通过任何一个节点查看到数据
要想nginx能够实现对后端trucker的反向代理,必须结合第三方模块来实现
1.编译安装nginx
2.准备启动脚本
3.nginx与mofilefs互联
查看效果
5.配置后端truckers的集群
查看效果
大功告成了,后续思路,前段的nginx和数据库都存在单点故障,可以实现高可用集群
hdfs等分布式文件系统真的会存储数据吗?
HDFS(Hadoop分布式文件系统)是一种分布式文件系统,它主要用于存储大量的数据,并提供高可靠性和高吞吐量的数据访问。因此,HDFS是能够真正存储数据的分布式文件系统。
与传统的文件系统相比,HDFS有如下优点:
容错性:HDFS可以自动修复硬件故障,并保证数据的完整性和安全性。
可扩展性:HDFS可以根据数据量的增长而扩展容量,并可以支持数千个节点。
数据并行处理:HDFS可以分割数据块并并行处理,提高数据处理速度。
总之,HDFS是真正的分布式文件系统,可以用于存储大量的数据,并提供高性能的数据访问。
大数据环境下分布式文件系统有哪些特点,相应的优化思路是什么
分布式元数据管理:分布式元数据管理主要通过元数据服务分布式部署的方式,实现了元数据分布式管理,解决一般分布式文件系统的单元数据服务节点导致的响应用户请求效率不高、存储文件数目受限和单点故障等问题,具有降低用户请求处理延迟,提高分布式文件系统的可扩展性和可用性的特性。一般包括完全分布式架构、元数据访问负载均衡、元数据服务器高效索引、元数据服务器弹性伸缩等技术点。-分布式文件系统可以存储大文件系统
多层级存储管理:多层级存储管理用于实现内存 / SSD/HDD 等异构存储设备的池化管理,以及各类存储设备的动态接入管理,通过设备抽象和提供统一命名空间,面向分布式文件系统提供统一的存储资源池,支持热点数据自动感知和智能化存储调度,最大程度提升数据存储与访问的效能。一般包括异构存储设备管理、多存储系统适配、统一命名空间、基于热度的存储资源调度等技术点。-分布式文件系统可以存储大文件系统
数据一致性保障:数据一致性保障主要解决分布式文件系统中多副本和缓存等在数据存储与访问过程中的一致性问题,通过构建数据一致性模型、进行数据一致性校验等方式,保障数据在存储和访问过程中的一致性,在提升数据访问性能的同时确保数据存储和访问的正确性。一般包括一致性协议优化、一致性检验等技术点。-分布式文件系统可以存储大文件系统
高并行读写优化:高并行读写优化用于提高分布式文件读写的并行化水平,最大化提升分布式文件系统下的数据访问效率。一般包括分布式数据访问缓存管理和调度算法优化、IO 算法优化和合并 IO 等技术点。
分布式散列与动态均衡:分布式散列与动态均衡实现分布式文件系统下高性能的数据块定位,提高数据访问性能,以及数据块的迁移和再平衡,提升分布式文件系统的稳定性和可持续服务能力。一般包括基于一致性哈希的数据块索引管理、动态数据再平衡等技术点。-分布式文件系统可以存储大文件系统
存储高可用:存储高可用通过数据多副本技术、状态自检测和自修复、核心服务分布式部署等技术手段,实现自动检测分布式文件系统中的各种错误和失效,并且在文件系统出现错误和失效时可自行进行多副本间的数据修复,最终持续向用户提供正常的数据访问服务。一般包括可配置数据多副本、数据自恢复及自维护等技术点。-分布式文件系统可以存储大文件系统
海量小文件高性能存储访问:海量小文件高性能存储访问主要采用小文件汇集成大文件进行存储、细粒度二级索引管理等技术,实现在现有分布式文件系统的基础上,扩展对海量小文件的存储与访问的能力,同时解决小文件的随机读写问题,大大提高分布式文件系统对海量小文件的存储访问效率。-分布式文件系统可以存储大文件系统