论文部分内容阅读
随着社交网络的兴起和物联网的快速发展,各种形式的数据正发生爆炸式的增长和堆积。如今Apache Hadoop已成为大数据行业发展背后的驱动力,而且成为了许多企业的首选。Hadoop是一种新型的计算架构,可以并行的对数据信息进行分布式的管理。其提供的是便宜的处理大数据的能力,高容错性和易扩展性也是其越来越受欢迎的原因。Hadoop分布式文件系统是Hadoop的核心之一。HDFS采用master/slaves式结构,系统中有且只有一个主节点(NameNode),可以有多个从节点(DataNode),在存取大文件时,有非常可观的性能。然而这样的结构同时带来了弊端,在存取海量小文件时,会产生大量的元数据,并且系统需要维护这些数据信息的心跳机制,这会给主节点带来了巨大的压力,使得系统存取效率低下,成为Hadoop的性能瓶颈之一。现代及将来的云计算中,小文件是主要的数据信息,如何有效的存取海量小文件也成为了许多互联网公司争相研究的问题。由于分布式文件系统在存取海量小文件时表现出的乏力现象,Hadoop自身提供了归档工具Hadoop Archiver(HAR)和Sequence File文件合并方案等,这些方案可以非常有效的降低主节点元数据的数量,从而一定程度上提高系统在小文件存取时的效率。但是由于HDFS存储元数据和索引的随机性,使得在读取文件时,消耗的资源很可能会增加,并且在访问系统中不存在的文件时,需要遍历整个fsimage文件,极大的浪费NameNode有限的资源。鉴于此,在吸取其他研究者优秀策略的基础上,本文提出一种基于MapFile的小文件存取优化方案。方案的主要思想是,在存储小文件时,客户端根据小文件的类型和访问权限,通过同类型和同访问权限对小文件进行分类合并成MapFile,合并后的大文件交给HDFS处理。根据缓存技术对数据命中的影响,引入由Nexist文件缓冲区域、多级缓存组成的缓存模块,文件读取时,有效的提高文件命中效率,避开对NameNode频繁访问,减小NameNode的压力。通过对传统HDFS、基于MapFile的HDFS和本文优化后的HDFS的分析和研究,分别搭建三种系统环境,并对相应NameNode内存消耗和存取效率的进行测试和分析。实验表明,该策略能有效降低存取海量小文件时主节点中内存的消耗,减少了小文件的读取时间,另外在访问系统中不存在文件时,能有效的解决NameNode遍历所有索引的问题,从而整体上优化系统的存取效率。