论文部分内容阅读
Hadoop是当前流行的大数据处理平台,因其高扩展性、高可靠性等优点得到业界广泛应用。Hadoop的核心组件HDFS(Hadoop Distributed File System)可高效存储超大文件,具有高容错、高吞吐量等特性。然而HDFS存储海量的、体积远小于数据块大小的文件时,却会由于HDFS访问特性和元数据管理模式等因素,引发“小文件问题”,即表现为:(1)客户端需频繁跳转数据节点存取小文件,文件读写性能差;(2)集群运行时,名字节点将全部元数据载入内存管理,但内存有限难以管理海量小文件元数据;(3)名字节点启动时加载海量元数据耗时久,造成集群长时间不可用。随着互联网中图片、日志等小文件的日益增多,Hadoop常要存储或处理大量小文件,如何研究解决Hadoop小文件问题,受到了学术与工业界的持续关注。现有研究成果主要通过将小文件聚集成大文件,减少文件和元数据数量,从而缓解名字节点内存压力,实现存储大量小文件的目标。但是,现有方案存在小文件跨块、块空间浪费等问题,并由于牺牲了小文件元数据,造成HDFS无法直接对小文件执行目录命令、访问控制等文件系统管理操作。本文针对小文件访问和小文件元数据管理两方面展开研究,综合解决Hadoop平台小文件问题。针对海量小文件读写性能差的问题,本文提出一种海量小文件多级优化存储方法。该方法首先采用均衡合并队列算法,将小文件合并为数据块体积的大文件,充分利用块空间并避免小文件被跨块存储,减少存储文件时的节点跳转,提高写入速度。其次通过布隆过滤器与文件映射索引,结合预取缓存策略,缩短读取文件的查询和传输时间,提高读取速度。仿真实验验证,该方法能提供高效的小文件读写性能。针对名字节点难以管理海量小文件元数据的问题,本文提出一种基于日志合并树与扁平目录的元数据管理方法,弥补已有方案在小文件元数据管理上的不足。首先设计了一种基于日志合并树和内存映射文件的元数据存储组件,将名字节点管理元数据的位置由内存转移至磁盘,提高元数据管理规模。其次对目录与元数据进行扁平化处理,名字节点无需重建树形目录,缩短其加载和访问元数据的时间。仿真实验结果表明,该方法可实现高吞吐的元数据操作性能,能达到数倍于原始HDFS的元数据管理规模。