论文部分内容阅读
Hadoop是近几年发展比较成熟的云计算平台之一,凭借其可靠,高效,可伸缩的特性在互联网领域得到了广泛应用,比如Yahoo、Amazon、Facebook等公司成功地应用了Hadoop,同时也得到了学术界的普遍关注。HDFS作为Hadoop的分布式文件系统有着高可用的特性,但它是为大文件的存储与计算而设计,却忽略了对小文件处理的优化,当大量的小文件存储到HDFS中就会产生大量的元数据,因而占用NameNode大量的内存。而对海量小文件高并发的访问使得HDFS的NameNode和DataNode都负载过大。这使得HDFS不适合存储小文件。针对HDFS在小文件处理的不足,本文提出了一个基于HDFS的中间件HMFS来解决HDFS的小文件问题。它由用户接口层、任务层和存储层组成。能够很好的实现对小文件的上传、下载、修改、删除操作。并且它所有的任务都在后台运行,通过读写分离机制大大地提高文件的上传效率,通过缓存预取机制提高了文件的下载效率。在小文件合并的优化方面,本文提出了SmartFS。SmartFS通过分析小文件访问日志,获取用户访问行为,建立文件关联概率模型,并根据基于文件关联关系的合并算法将小文件组装成大文件后存至HDFS;当从HDFS获取文件时,根据基于文件关联关系的预取算法来提高文件访问效率,同时采用基于预取的缓存替换算法Prefetching-LFU来管理缓存空间,提高文件的命中率。最后,本文将HMFS与SmartFS的优点相结合,设计并实现一个基于HDFS的通用高效的小文件系统,该系统使用HMFS进行在线的文件处理,如文件上传、下载、更新及删除。并使用SmartFS来分析历史的访问日志得到文件关联,再将相关联的文件重新合并上传到HDFS中。在预取与缓存策略上,它结合HMFS与SmartFS两种情况进行预取与缓存,保证了各种情况的高效运行。实验表明该系统的上传,下载速度相对HDFS有极大的提升,且减少了HDFS元数据量,使得HDFS能够支持海量的小文件处理,并且它能将相关联的文件合并提高了预取与缓存的效率。综上,该系统是一种通用且高效的HDFS小文件解决方案。