论文部分内容阅读
随着web2.0技术的普及和飞速发展,互联网数据出现了爆炸性的增长。为有效存储和管理如此大规模的数据,诸多研究机构和公司都提出了各自的数据存储方案。其中影响最大的莫过于开源的HDFS(Hadoop Distributed FileSystem),其已经在学术界和工业界得到了广泛应用。但是,HDFS的优势在于存储超大文件,对于海量小文件的支持很不理想。
结合图片检索系统和“中华字库工程”项目,本文研究如何基于HDFS搭建海量小文件存储系统。通过分析HDFS的结构特点,找到其对海量小文件支持不理想的原因,并提出一种解决HDFS海量小文件存取的方法HIFM(Hierarchy Index File Merging)。
HIFM是一种基于小文件合并的方法,主要包括以下五个方面的内容。第一,HIFM方法通过将小文件合并为大文件,减少系统中存储文件的数目,达到降低NameNode内存开销的目的。第二,HIFM方法在合并的过程中会生成两个层次的索引文件,并采用集中存储和分布式存储相结合的方式管理索引文件。第三,HIFM方法将索引文件预加载到内存中,减少磁盘I/O的次数,提高小文件随机读取的效率。第四,对于未满的大文件,HIFM支持其内容的动态追加。因此,当存储少量小文件时,可以将其追加到某个未满的大文件中,进一步减少NameNode的内存开销。第五,HIFM提供数据预取的机制,优化小文件顺序读取的效率。
基于HIFM方法和HDFS实现一套海量小文件存储系统,并对系统的性能进行测试与分析。实验结果表明,与原始HDFS、Hadoop Archive和HBase相比,HIFM方法能够有效降低NameNode的内存开销,缩短小文件的存储时间,并显著提升小文件随机读取和顺序读取的性能。其中随机读取的时间延迟保持在20ms左右,完全满足在线小文件读取服务的应用需求。