论文部分内容阅读
集群是一种计算机系统,通过一组松散集成的计算机软件和硬件连接起来高度紧密地协作完成计算工作。MapReduce是Google提出的一个软件架构,用于大规模数据处理的分布式计算模型。MapReduce运行在集群上,能够完成任务的自动分发与并行运算,利用集群强大的性能来完成计算工作。本论文主要对Platform公司开发的集群引擎MapReduce的中间数据在各个节点间的共享问题进行了研究,提出了中间数据的存贮与传输优化的解决方案。在这个解决方案中,实现了中间数据存贮功能和中间数据传输优化功能来提升系统性能。在保证数据完整性的情况下,解决了大规模的中间数据在各个节点间进行共享和传输时,每个节点由于大量的磁盘读写和多线程并发读写等导致整个作业处理速度偏慢的问题,从而提高了整个作业的处理速度。本论文针对中间数据在不同任务端的处理优先级和方式的不同,由Map任务中间数据存贮模块和Reduce任务中间数据存贮模块来负责每个节点上的不同任务的中间数据存贮。而中间数据传输优化模块则优化了中间数据在各个节点间的传输速度。Map任务和Reduce任务的中间数据存贮模块使用了相同的原理,但是实现方式不同。存贮中间数据时都是通过管理磁盘I/O来达到优化磁盘I/O性能的目的。其实现思想都是对文件进行内存映射的方式将中间数据存储在内存中,并维护这些内存中的中间数据。中间数据传输优化模块则是在中间数据存贮模块的基础上,能够更快的将Map端内存中的中间数据推送至Reduce端,并显著减少网络连接数。从而加快整个作业的运行速度。本论文的测试结果表明,开启中间数据存贮与传输优化功能时,大规模数据处理的作业的运行速度有明显的提升,作业运行所用的时间大幅减少。另外,根据业界标准的Hadoop基准测试对本论文实现的功能进行了测试。在测试中执行Hadoop常见的不同负载的应用时,相对于Hadoop,集群的性能提高了20%-60%。