论文部分内容阅读
随着互联网在各行各业的应用,数据以井喷之势呈指数暴增,传统的数据处理方式已经不再适用。这种背景下,各种数据存储和处理技术蓬勃发展,云计算和云存储应运而生。作为云平台最基础的存储设施,Hadoop 分布式文件系统(HDFS)由于其高拓展、高容错、开源且能部署在低成本机器上等特性,一经问世就受到了各大企业和科研机构的青睐,在教育、金融、医疗、军事等领域发挥着举重若轻的作用。 然而,原始的HDFS使用“一主多从”的架构,将元数据与真实文件分开存储,由NameNode管理对系统至关重要的命名空间。这样的设计在简化系统架构的同时也带来了NameNode的高可用性问题。此外,HDFS 最初被设计成以流式方式服务于大文件,并不适用于存储和分析海量小文件的应用,而当前各类社交和购物网站上每时每刻都在产生着小文件,直接存储不仅造成NameNode的内存压力,而且导致文件读写效率低下。 针对NameNode的高可用性问题,本文对HDFS的核心运行机制进行了深入分析,并通过对早期几种HDFS高可用性解决方案进行对比,总结了解决高可用性问题的思路,并由此引入当前Hadoop2.X时代的HA方案。在对该方案各模块进行详细分析后,提出了在当前HA中再增加一个备用节点的方案。对元数据一致模块和主备切换模块做了相关优化,为探索在集群中拓展多个NameNode提供更多可能性。最后通过实验,验证了优化方案不仅能保证元数据的一致,而且能在主备NameNode节点都失效时实现自动切换,切换时间远小于原HA方案。 针对HDFS处理小文件效率低下的问题,本文主要从存储和访问两方面出发,在原有的HDFS基础上增加一个小文件处理单元,完成文件的合并和索引文件的建立。合并文件时考虑了每个文件的体积,通过充分利用每个数据块空间来减少合并文件的数量。基于小文件的名称和类型,建立了该文件到数据块的映射及数据块内具体位置的两级索引,并根据文件类型对局部索引进行分片形成全局索引,放置在小文件处理单元中以加快检索速率。最后,在搭建好的Hadoop平台上测试了本文方案,与Hadoop自带的Har方案进行了对比,结果表明该方案可以有效提高HDFS在存储和访问小文件时的效率。