张恒均
摘要:分布式存储与传统集中式存储截然相反,集中式存储采用的存储服务器存放数据,更多地依赖于硬件设备,面对大规模存储需求,很容易成为制约系统性能发挥的因素。分布式存储所谓一种概念,最早由美国的谷歌公司提出,它包含的种类有很多,比如分布式文件系统、分布式对象存储、分布式数据存储等,但无论是哪种存储,核心内容和思想都是一样的。与传统集中式存储相比,分布式存储所用到的物理设备较少,主要是靠整合、划分和分配存储资源来建立一个虚拟的存储空间,再由具体某些虚拟存储空间出发,扩展出更多系统结构,在提高可靠性和有效性的同时,也解决了冗余等诸多问题。下面本文将对分布式存储——数据中心建设解决策略进行研究。
关键词:分布式数据;HDFS;Cepf;问题解决策略
一、透析分布式存储
(一)HDFS分布式存储体系结构
HDFS是一种实现分布式文件存储的体系结构,它类似于一个文件传输系统,当客户端需要读取某个文件数据时,首先会从元数据,也就是namenode服务器获取文件信息,然后在元数据服务器和实际存储数据服务器(datanode)的交互作用下,获取具体有效数据。通过分析整个交互过程我们发现,作为整个HDFS文件系统中的管理者,namenode主要负责文件系统的命名空间、集群配置信息和存储块的复制;datanode则是文件存储的基本单元,当客户端向namenode发送文件写入和读取请求后,namenode会按照事先制定好的规则反馈给客户端自己所管理的datanode信息。一般来说,一个集中中只有一个namenode的设计大大简化了系统结构。
(二)Ceph分布式存储系统结构
Ceph分布式存储系统的设计初衷是为了提供更好的可靠性、可扩展性和性能。它所采用的是 CRUSH 算法和数据分布均衡,这与传统集中式存储的元数据寻址有着非常大的不同,可实现各种类型的负载副本放置规则,存储节点规模十分庞大。Ceph的核心组件有Monitor服务、OSD服务和MDS服务,其中OSD是负责响应客户请求返回具体数据的进程操作,它的元数据被保存在Monitor里。一般来说,Ceph分布式存储系统中的块存储需要Monitor服务、OSD服务和客户端软件,Monitor负责维护存储系统的硬件逻辑关系,OSD负责磁盘管理,以实现真正的数据读写。
块存储是Ceph分布式存储系统三种存储类型中的一种,另外两种是文件存储和对象存储,每种类型的存储都有各自的优点和缺点,如块存储的优点是利用Raid和LVM来保护数据的完成性,通过组合廉价硬盘来提高存储容量,由多磁盘合成的逻辑盘能够提升读写效率,缺点在于,数据共享无法在主机之间实现,且由光纤交换机等构建的硬件网络平台成本较高;文件存储类型的优点是,造价低廉,文件共享是可行的,但读写和数据传输速度慢也是不容忽视的问题,并且在使用场景和日志存储方面也有比较特殊的要求;而对象存储类型既具备了块存储读写速度高的优点,也具备了文件存储共享的特性,但更适合去更新变动较少的数据。
二、不同分布式存储系统存在的问题
(一)HDFS的缺点
1.短时间、低延迟请求的响应能力不足
受自身性质和结构的限制,HDFS在处理用户要求时间比较短的低延迟请求时会显得力不从心。HDFS最初是为了处理和解决大型数据集问题而设计的,实现高吞吐量的代价就是出现高延迟。
2.小文件存储量的有效性低
由于元数据会被存放在内存中,因此文件系统所能容纳的文件数量必然是有限的,如果以每个文件160字节去计算,200万份文件就需要占用至少600MB的内存空间,虽然以目前的情况来看是可行的,但当发展到10亿以上时,对硬件的要求就会变得很高。
3.文件写入及修改的限制
从目前来看,HDFS还不支持多用户对同一个文件写入的操作,也就是说,HDFS规定,一个文件只配有一个写入者,且只能在文件末尾完成,对文件修改也是如此。
(二)Ceph分布式存储系统的问题
1.可扩展性
由于CRUSH 算法的存在,使Ceph对系统扩容方面充满了自信,甚至声称能够实现无限扩展,事实上也确实如此。但这种无限扩展更多是站在宏观立场去做判断,其扩展过程并不是很顺畅。由于Ceph没有中心化的数据节点,使扩容易受“容错域”制约,导致数据放置策略受到影响,所以扩容力度没办法得到提升。
2.存储成本问题
众所周知,Ceph是去中心化的分布式存储,元数据被分布在各个物理设备上,事实上,对象的被随机分配是无法保证均匀地存储在每一块磁盘上,所以某些磁盘的使用率会明显高于全部磁盘的平均使用率,那么这跟存储成本又有什么关系呢?在集群整体使用率不高的情况下,即便出现上述所讲的问题也没什么,但在整体使用率达到一定程度时(一般会以65%作为标准去衡量),就需要管理员对高使用率的磁盘进行reweight,如果在调整过程中另外一块磁盘也被写满了,那管理员就必须被迫在Ceph没有达到稳定状态前,又一次进行reweight操作,从而使Ceph变得越来越不稳定,加之扩展性方面的问题,这个Ceph系统运行就会很紧张。所以,很多公司为了避免出现这些问题,会选择增加成本,购买更多的物理设备,准备更多的磁盘,其实这并不是一个很省钱的办法,很多业界人士认为,一般Ceph集群在达到50%使用率时,就要开始准备扩容了,越大规模的集群,越多空置的存储资源,就会浪费越多的钱。
三、问题改进策略
(一)HDFS问题改进策略
1.HBase开源数据库
建立 HBase数据库是解决低延时问题比较有效的一个办法,在很大程度上提升了存储系统的性能,使用缓存或多master设计可以降低client的数据请求压力,以减少延时。另一方面,着手于HDFS系统内部进行修改也是一个不错的办法,但需要权衡吞吐量的问题。
2.提高小文件存储量的有效性
关于这方面问题的解决办法还是不少的,比如用SequenceFile、MapFile、Har等方式对小文件进行归档操作,其中比较重要的点在于,要知道与归档文件的映射关系;再有就是横向扩展,即把几个Hadoop集群拖在一个虚拟服务器后面,形成一个大的Hadoop集群,google曾经就是这样操作的;还有就是正在研发中的GFS II,它也将被改为分布式多Master设计,而且还支持Master的Failover。
(二)Ceph问题改进策略
1.扩充“容错域”
在开始规划Ceph集群时,设定好更大层次的“容错域”,比如Rack。 可以是真实的Rack,即使没有也可以是逻辑的Rack。这样扩容时,可以扩一个逻辑“容错域”,就可以打破扩一台机器的限制,扩一整个Rack,至少有好几台机器。
2.Ceph存储成本
到目前为止,还没有太好的办法去解决Ceph储存成本的问题,有人建议过Ceph集群按整个pool去扩容,即当一個pool满了,就不扩容了,开新的pool,新的对象只准写新的pool,老的pool的对象只可以进行删除和读取操作,但这样做也就谈不上“无限扩容”了。
四、结束语
分布式存储较集中式存储相比,的确为使用者提供了诸多便利,具有很明显的优势,且每一种分布式存储都有自己独特的亮点,给使用者提供了多样化的选择。但在具体应用时,还需要结合实际情况,HDFS也好,Ceph也罢,它们也都有自己的不足,没有哪种产品是十全十美的,数据中心建设的标准应遵循分布式存储的特点进行实施,这样才能最大限度提高数据使用率和保证数据安全。
参考文献
[1]宁睿,张琳.基于分布式深度网络的网络舆情分析方法研究与实现[J].电子设计工程,2020,28(14):85-89.
[2]高红岩.基于分布式存储的应用场景研究[J].网络安全和信息化,2020(07):87-90.