论文部分内容阅读
近年来,互联网中数据量激增,一般的文件系统无法存储海量数据,为解决这个问题,研究人员提出了分布式文件系统的概念。目前国内外众多知名企业使用Hadoop处理海量数据。Hadoop是一个可以处理和存储海量数据的云计算平台,它自行实现一个分布式文件系统HDFS。在HDFS中,存在一种称为NameNode的元数据服务器用于存放整个HDFS的元数据信息,还有一种称为DataNode的数据节点用于存放具体的文件数据。一个文件在HDFS中会有多个备份用于保证数据的可靠性,当数据损坏时,可以使用备份数据。本文对HDFS的存储机制进行了分析与研究,主要是分析和研究HDFS中存在的两个问题:大量小文件处理问题和元数据服务器的单点失效问题。针对小文件问题,本文首先分析了Archive归档工具和SequenceFile方案的优点与不足,然后设计一种新的方案Multi-NameNode Cluster。Multi-NameNode不存在单个NameNode的内存性能瓶颈,并且不同的NameNode处理不同的文件请求,因此每个NameNode内存中存放不同文件的元数据,NameNode之间相互独立,且一台NameNode失效不影响其他NameNode的正常工作。最后对该方案进行了模拟实现,并将该方案和Archive方案进行对比实验和结果分析。针对单点失效问题,本文先对Hadoop1.x中的解决方案进行了介绍分析,然后着重分析Hadoop2.x中的QJM方案。QJM的原理在于集群中启动两个元数据服务器和一组日志服务器,处于活跃状态的NameNode把日志写入到日志服务器中,而处于等待状态的NameNode则从日志服务器中读取日志,从而两者中的元数据可以达成一致。在一个NameNode失效后,另外一个NameNode可以快速的接管工作。最后提出RAID方案,在QJM方案的基础上增加一个对日志存储的保护措施,使用独立磁盘阵列对Active NN写入本地的日志进行备份,使得在发生主从切换时能最大程度的恢复日志。