论文部分内容阅读
随着移动互联网、物联网的发展,数据量正以指数级增长,传统的技术架构在处理海量数据面前显得越来越乏力。Hadoop作为一种能够高效处理海量数据的技术框架,越来越多的受到业界的关注。Hadoop由底层的分布式文件系统HDFS和分布式计算框架MapReduce组成,采用主从架构的设计,HDFS的单名称节点设计简化了文件系统的管理,却带来了海量小文件处理效率低下的问题。本文考察国内外学术界、工业界对海量小文件处理的研究,通过对Hadoop及其生态系统的技术细节的学习,发现目前的解决方案还没有充分考虑到文件的多样性、重复性等问题,对Hadoop集群的单点问题没有很彻底的解决。因此,本文提出了利用Hadoop生态系统的相关组件,对Hadoop集群进行优化,试图改善海量小文件处理所面临的问题。本文提出了利用MD5算法对文件进行快速判重,过滤内容重复的文件,减少写入文件的个数,降低磁盘消耗;提出了利用MapFile进行文件合并,文件按照大小分别存储,各种类型的小文件建立多级合并队列,当队列达到阈值时合并写入HDFS,在一定程度上降低了文件的个数;提出了利用HBase进行索引信息的持久化操作,利用缓存器进行索引的缓存,并对缓存器和索引器中的数据建立一致性保护,既保证数据读写效率,又能对外提供稳定服务;提出了“标记-删除-压缩”的方法进行文件删除,修改要被删除的小文件索引信息标志位,当删除文件时,对小文件所在的大文件进行压缩处理,一方面提高了删除的速度,另一方面减少了删除小文件带来的空间碎片。本文设计了简易上传下载系统,完成优化前后文件上传、下载模块的设计,并对系统进行读写效率的测试,对优化前后集群主节点内存、网络、磁盘等方面的消耗进行对比分析,结果表明优化方案相比较传统的Hadoop有着比较好的效果。