论文部分内容阅读
在信息化飞速发展的今天,信息的不断膨胀导致分布式文件系的应用越来越宽泛,其中HDFS因其良好的扩展性,容错性和开源性得到业界的广泛关注。但其设计由于是仿照GFS,因此主要是为搜索引擎应用而优化的,要将其应用到其它领域需要进一步的研究和改进。尽管在搜索引擎中文件多是以大数据集的方式出现,但是在其它很多应用中,大量小文件的访问是很普遍的。而HDFS在大量小文件的访问上性能非常的低,尽管HDFS有很多优秀的特性,但小文件访问的低效性还是限制了其应用范围。目前解决HDFS小文件问题最有效最可行的方法就是将小文件集中转化为Sequencefile文件,然后对小文件的处理转化为对Sequencefile文件的处理。在以上前提下,本文设计并实现了seqtool转化工具。该工具可以高效地将大量小文件直接转化为Sequencefile文件;同时由于小文件通常是以归档文件的形式存在,因此该工具同样支持归档文件到Sequencefile文件的直接转化;为满足应用的追加写需求,该工具还支持对Sequencefile文件的追加写;最后该工具还支持对小文件在Sequencefile内进行不同层次的压缩以节省空间。同时本文还实现了Sequencefile的高效随机读取,通过为Sequencefile文件引入了一个附加的元数据文件,里面记录的是每个小文件所在的位置,这样通过读取该文件,并使用字典树加二级索引的算法构造查询数据结构,可以高效的实现在Sequencefile中对小文件的随机读取。除此之外本文还实现了HDFS的Web管理界面,实现了查看,删除,上传,下载等文件管理的基本功能。最后,本文对使用Sequencefile文件代替大量小文件的效果进行了性能测试与比较。对于批量直接读写小文件和使用Sequencefile来代替,性能差距是非常明显的,Sequencefile有着良好的性能优势,同时由于改善了Sequencefile的随机读取效率,因此Sequencefile在随机读取测试中的性能优势也十分明显。最后针对WordCount的MapReduce任务进行测试,Sequencefile的性能优势同样十分明显。