论文部分内容阅读
近年来,企业和个人数据都呈现爆炸性增长的趋势。谷歌首席执行官EricSchmidt表示,现在全球每两天所创造的数据量等同于从人类文明至2003年间产生的数据量的总和。如何存储海量的数据,成为当前存储系统所面临的巨大挑战。传统集中存储方式已经满足不了数据存储的需求,于是出现了用于大规模数据存储的分布式文件系统,如Google File System(GFS)、Hadoop File System(HDFS)、PVFS、Luster等。这些分布式文件系统具有良好的可扩展性和容错特性,能够满足海量数据存储的需求。但是在很多应用场合除了要求支持海量大文件的存储,还需要支持海量小文件的存储。虽然GFS、HDFS等分布式文件系统能够满足大文件的高效存储,但在存储海量小文件时,效率却很低。针对此问题,工业界和学术界提出了很多方法,但普遍存在性能低,系统可靠性不高,不能高效存储小文件元数据等问题。针对这些挑战,本文设计实现了一种基于HDFS的海量小文件存储系统。该系统的主要设计思想是,在HDFS现有的目录树结构下,将一个文件夹内的小文件,打包成一个大文件进行存储,该文件称为小文件数据文件。同时生成小文件索引,记录小文件在对应数据文件中的位置。本文设计和实现的基于HDFS的海量小文件存储系统是可扩展、高容错、分布式的海量小文件存储集群系统。本文提出小文件聚合存储技术通过将小文件数据存储在HDFS数据文件中,实现数据的分布式存储和容错;同时提出小文件分布索引管理技术将索引分布到各个数据节点管理,解决了单一元数据节点在存储海量小文件成为瓶颈的缺点;设计的海量小文件存储系统索引容错机制通过对索引进行容错,降低小文件丢失的风险;通过在单个目录下创建多个多数据文件,解决访问同一目录下小文件冲突的问题。在以上基础上,系统在客户端缓存用户常用到的小文件索引位置及数据文件流的信息,提高系统的文件访问的效率。通过实验表明,该系统小文件读写延迟、吞吐率与不增加小文件支持的原生HDFS相比有了很大的提高。并且,该系统能够有效解决海量小文件存储元数据过于庞大的问题,且通过索引容错机制,提高了该系统的可靠性。