论文部分内容阅读
随着科学技术的不断发展,数字信息正在呈现爆炸式的增长,传统的存储方式已不能满足海量数据的需求。如何高效的处理和存储海量数据成为一个亟待解决的问题。目前,很多大型企业都利用HDFS(Hadoop Distributed File System)来存储海量数据。最初的HDFS被设计为适合存储大文件的文件系统,其在存储大文件时具有良好的可靠性和拓展性。但随着互联网的不断发展,HDFS开始应用于海量小文件的存储,其存在的缺点和不足逐渐暴露出来。海量数据中的小文件存储成为制约HDFS整体性能的瓶颈.本文主要研究HDFS存储小文件的问题。针对HDFS存储前的小文件处理工作和存储后的检索,提出了三个算法。算法一,基于特征类型的顺序表小文件合并算法。该算法在研究现有的小文件合并方法的基础上,通过获取小文件数据特征,然后根据其数据特征所属的特征类型,对小文件进行流水式的合并,并建立基于文件名的索引文件交由NameNode统一管理。算法二,基于数据特征的DataNode预分配算法。该算法的目的是提高NameNode的工作效率和减少其因负载过重对整个HDFS造成的性能影响。算法三,基于访问频率的小文件检索算法。该算法借鉴了虚拟存储和页面置换的思想,用户检索时将索引文件载入虚拟内存并且根据索引文件的访问频率进行索引文件的置换,从而实现从海量的索引文件中快速查找到需要的小文件。通过在实验室集群上搭建Hadoop实验环境,设计了三种不同的实验用例,对我们提出的三个算法进行了系统的测试。实验结果表明:我们提出的三个算法有效地提高了HDFS对小文件的存储和读取效率,并且优化了整个HDFS的存储性能。