论文部分内容阅读
随着互联网应用的发展,各大IT公司纷纷推出自己的云计算平台,并把云计算作为未来重要的发展战略之一。伴随着数据量的爆炸式增长,由于单台机器不可能完成海量数据存储和计算性能要求,如何构建分布式集群系统来处理海量数据,是云计算所面临的主要挑战之一。而由Apache软件基金会开发和推出的Hadoop,由于其高可用性,高可扩展性和高容错性,已经是目前云计算平台的主流。其中充分利用了集群的存储和高速计算,Hadoop框架实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS,以及一个基于MapReduce的并行编程模型。但由于其发展时间还不长,还有很多地方值得进一步的深入研究和改进。
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供搞吞吐量的数据访问,非常适合大规模数据集上的应用。Hadoop MapReduce是一个使用简易的编程模型,基于它写出来的应用程序能够运行在由成千上万个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。本文对Hadoop平台下的HDFS和MapReduce分别进行了深入研究和实践。
本文通过具体分析了HDFS的架构设计,并对HDFS中的NameNode,DataNode,HDFS读写文件以及HDFS中RPC(Remote Procedure Call)机制都做了详细介绍。而为了提升Hadoop平台的启动速度,主要指NameNode的启动,本文对NameNode进行优化。NameNode启动分为两个阶段:FsImage加载和BlockReport阶段。而在FsImage加载阶段,本文通过修改NameNode源代码,使用多线程替代单线程并行读写NameNode数据持久化目录以达到提升NameNode的启动速度。
在Hadoop分布式计算平台中,如何优化MapReduce计算性能也是目前研究的一个热点问题。除了编写高性能的Map和Reduce函数,主要从优化系统框架方面提升运算性能。本文通过详细介绍MapReduce编程框架,并具体分析了MapReduce中Shuffle阶段流程。分别从Map端数据压缩,重构远程数据拷贝传输协议,Reduce端内存分配优化三方面来优化和重构Shuffle。
最后根据本文所做的研究工作,搭建了一个小型Hadoop集群,实现了基于WEB日志的分析系统(其中数据来源于搜狗实验室提供的用户搜索引擎查询日志库),主要分析用户每天搜索的时间段热度。并通过对优化前后的Hadoop版本搭建的集群,分别进行了对比实验,验证了本文对于Hadoop集群平台优化的可行性,同时性能也有显著的提升。