基于HDFS的海量小文件处理策略的研究与实现
作者单位:东南大学
学位级别:硕士
导师姓名:汪芸;王炯心
授予年度:2018年
学科分类:12[管理学] 1201[管理学-管理科学与工程(可授管理学、工学学位)] 08[工学] 081201[工学-计算机系统结构] 0812[工学-计算机科学与技术(可授工学、理学学位)]
主 题:分布式文件系统 HDFS 小文件合并 MapFile 多维表
摘 要:随着互联网的兴起和大数据时代的来临,当前企业与科研机构需要存储与处理的数据规模成指数级增长,传统单机存储技术的存储容量、使用成本和维护成本已经不能满足需求。Hadoop是由Apache基金会开发的开源项目,凭借其部署方便、编程简单、硬件成本低的特点,成为越来越多企业和研究机构的选择。而Hadoop的分布式文件系统HDFS设计之初主要针对大文件进行存储,随着微信、qq、今日头条等高频应用的兴起,以语音、图片以及传感信息为主的小文件存储需求不断增加,如果直接将海量小文件上传到HDFS,将会对NameNode造成较大内存压力,文件访问效率较低。虽然后来增加了一些弥补措施,但仍不够灵活。本文利用小文件合并的思路,将小文件合并为大文件进行存储,使Hadoop在存储海量小文件时NameNode的负载大大降低。首先,本文先对目前比较流行的分布式文件系统GFS、HDFS、TFS进行研究,分析HDFS的主要模块,深入研究DFSClient、NameNode、DataNode等模块的实现原理。从理论上证明HDFS对小文件存储的局限性。其次,通过阅读大量国内外文献,了解针对HDFS的海量小文件处理的解决方案。针对Hadoop自带的三种解决方案进行论述和分析,并出基于MapFile和多维表的小文件解决思路,详细述了两种思路的具体实现方案,对比它们的使用场景。最后更进一步出一种基于Redis的解决方案,进一步高小文件查询速度。HDFS供了Shell和Http两种文件访问方式,但是编写脚本需要一定技术门槛,Http访问又并不方便与直观,因此本文实现了一个基于CBFS的虚拟文件系统,可以获得类似本地文件系统的操作体验。最后,本文将HDFS传统的存储方案与本文出的方案进行对比,测试结果表明,本文的方案可以有效的降低NameNode内存压力,降低文件读写延时。证明本文中基于合并思想的小文件优化方案的可行性和正确性。