论文部分内容阅读
随着计算机和信息技术的不断发展,传统的单机系统已无法处理日益增长的海量数据,大数据分布并行处理技术应运而生。分布式文件系统是大数据生态中的重要组成部分。HDFS(Hadoop Distributed File System)因为其可靠性和良好的扩展性已经成为广为使用的大数据分布式存储系统。HDFS采用典型的主从式架构,单NameNode节点的元数据承载能力有限,而且会成为HDFS访问的单点瓶颈。常用的水平扩展方案是增加HDFS集群中的NameNode节点数量,每个NameNode节点管理一个独立的命名空间,形成多个HDFS命名空间。多HDFS命名空间管理方案通过向上层应用提供一个统一命名空间,减轻了上层应用使用多HDFS命名空间的负担,同时也消除单NameNode节点带来的单点瓶颈问题。已有的多HDFS命名空间管理方案提供了一定的统一命名空间管理能力,但还存在管理复杂、不易使用等问题和不足。以ViewFS为例,ViewFS下的某个HDFS命名空间变动时,需要所有上层应用修改配置,因此使用显然不方便,易用性上存在不足。目前缺乏一个综合考虑易用性和元数据访问性能的多HDFS命名空间管理方案。此外,HDFS除了多命名空间管理复杂之外,由于采用基于磁盘存储访问的架构,还存在数据访问性能低的问题。随着服务器中可用内存空间越来越大,分布式内存文件系统的出现大幅提升了上层应用的数据访问性能。Alluxio是目前广泛使用的分布式内存文件系统。然而,Alluxio使用的数据块粒度大,而其底层所使用的单机内存文件系统ramfs数据块粒度很小,导致在数据读取过程中系统底层出现大量的缺页中断,这会严重影响内存文件系统数据读取的性能和效率。针对上述问题,本文的研究工作围绕分布式文件系统展开,具体研究工作主要包括多HDFS命名空间管理和分布式内存文件系统Alluxio读性能优化。论文主要研究工作和贡献点包括:(1)基于Alluxio的多HDFS命名空间管理。通过分析现有的多HDFS命名空间管理方法及其在易用性和元数据访问性能上的问题和不足,研究提出一种基于分布式内存文件系统Alluxio的多HDFS命名空间管理方法Alluxio ProxyFS,在保持易用性的同时,保证高效的元数据访问性能。同时,针对HDFS访问效率低下的问题,本文基于分布式内存文件系统Alluxio,研究实现多HDFS的缓存机制,将多个HDFS命名空间中的数据缓存到Alluxio中,以此提升上层应用的数据访问性能。(2)Alluxio分布式内存文件系统读性能优化。针对Alluxio数据访问时底层文件系统出现大量缺页中断,导致Alluxio系统数据读取性能下降的问题,本文研究提出两种优化Alluxio读性能的方法,包括Alluxio客户端packet级别缓存方法,以及基于hugetlbfs的Alluxio内存存储方法Alluxio-on-hugetlbfs,有效减少了 Alluxio客户端读取文件过程中底层系统的缺页中断次数,以此提高了Alluxio系统数据读取访问的性能。(3)基于以上的关键技术方法所优化后的HDFS和Alluxio系统,经过兼容性测试,可支持 Hadoop、Spark、HBase、Hive、Flume、Sqoop、Druid 等大数据系统的正常运行,部分兼容性测试成果已提交到开源社区,并在工业界开始使用。实验结果表明,Alluxio ProxyFS元数据访问性能相比现有的多HDFS命名空间管理方案提升了 60%左右,对迭代型应用的数据访问性能提升了 8%左右。Alluxio packet级别缓存将多个线程读取同一文件的性能提升20%左右,将单线程迭代读取同一文件的性能提升100%左右。Alluxio-on-hugetlbfs将Alluxio客户端的读取性能提升了 95%左右。基于以上的关键技术方法所优化后的HDFS和Alluxio系统,已经在苏宁云商的大数据平台中上提供上线服务,显著提高了苏宁云商大数据系统平台的分布式数据管理能力和读写访问性能。