随着互联网技术的迅猛发展,每天由网络产生的数据量越来越庞大。互联网企业面对这些浩繁的数据,常常陷入数据丰富而信息贫乏的尴尬境地。MapReduce是Google提出的一种用于大规模数据并行运算的模型。由于简单、易于实现、可扩展性强以及良好的容错性等优点,MapReduce被广泛应用于日志分析和海量数据排序等大规模数据分析领域。然而,通过对MapReduce的深入分析以及与并行数据库管理系统进行比较后,发现 MapReduce在性能方面不及传统的并行数据库管理系统。因此如何提高 MapReduce的性能已经成为大规模数据并行运算领域中的一个研究热点和难点问题。本文对通过优化作业调度算法的途径来提高MapReduce性能的技术展开了研究。
首先,介绍了MapReduce计算模型及其工作机制,重点分析了MapReduce作业执行流程和特点。
其次,分析了MapReduce作业执行时间的影响因素。着重分析了MapReduce配置参数及其存储结构对作业执行时间的影响程度,并设计了一种评估存储结构对性能影响的方法。实验结果表明了该评估方法的有效性。
然后,提出了一种基于神经网络的作业执行时间预测方法。该方法利用MapReduce已完成作业的相关数据信息,通过神经网络建立MapReduce参数和作业执行时间之间的关系模型,进而达到利用模型预测作业执行时间的目的。实验结果验证了该方法在预测作业执行时间的有效性和准确性。
最后,提出了一种基于高响应比优先的MapReduce作业调度算法。针对MapReduce基本调度算法存在不足之处,结合本文提出的MapReduce作业执行时间预测方法,提出了一种基于高响应比优先的作业调度算法。该算法综合考虑了作业的要求服务时间和等待时间,既考虑了短作业,又兼顾了作业到达的先后次序,不会使长作业长期得不到执行。实验验证了该调度算法对MapReduce作业调度的有效性。