论文部分内容阅读
伴随着数据种类的增多和数据规模的增大,NoSQL技术与MapReduce并行处理思想越来越受到重视。MongoDB作为NoSQL数据库的典型代表,支持对海量数据进行索引和查询,Hadoop作为MapReuce的开源实现,为海量数据处理提供了强大的并行计算框架,本文致力于将MongDB与Hadoop整合到一个平台,搭建了一个基于MongoDB与Hadoop的整合体系Mongo-Hadoop,其目的是为了综合利用MongoDB与Hadoop的优点,更好地应对大数据处理中的存储、计算和查询。本文首先对Hadoop与MongoDB的框架结构以及工作机理进行了深入研究,对比分析了Hadoop与MongoDB各自的优势与不足以及两者之间的一些共性,总结出了两个问题:在数据计算方面,MongoDB MapReduce存在很大的局限性,不能满足复杂的数据分析计算。在数据存储方面,HDFS作为Hadoop的底层分布式文件系统,为数据的高吞吐量而设计,却不能实现对数据的高效查询。针对第一个问题,本文实现了Hadoop与MongoDB整合的中间连接件Mongo-Hadoop connector,通过此插件能够实现Hadoop MapReduce对MongoDB中数据的高效处理。通过本文实验验证,在两个节点的集群上,Hadoop MapReduce的性能平均是MongoDB MapReduce的5倍。针对第二个问题,本文实现了Hadoop与MongoDB的整合框架,并提出四种不同的整合方案来应对大数据处理的不同需求。Mongo-Hadoop是对MongoDB与Hadoop的整合,为实现两者更好的兼容性,集群部署和参数配置显得尤为重要。本文对MongoDB集群与Hadoop集群中的各个角色进行了深入分析,从节点资源利用、数据本地化、可扩展性等方面考虑,总结出了Mongo-Hadoop集群的部署策略,同时对影响Mongo-Hadoop运行方式和性能的部分参数作了深入研究,并对影响整体性能的关键参数作了调优。最后,本文通过设计三种具有代表性的应用作为性能的测量基准,对Mongo-hadoop整合体系的不同整合方案进行性能对比实验,得出不同应用场景下的最优整合方案。实验表明,若对Mongo-Hadoop采用合理的方案,与其他架构相比,能性能最多可以提高28%,而所占用的节点资源只占50%。