论文部分内容阅读
越来越多的互联网公司依赖大规模的数据分析作为其核心服务的一部分,如日志分析、特征提取和数据过滤等任务。通过其Hadoop实现,Map Reduce模型已经被证明是处理此类数据的有效模型。进行这种分析时的一个重要挑战是预测单独作业的执行时间。这对于资源的管理以及进度的安排有重要意义。但是Map Reduce模型程序为了解决复杂的问题,模型的程序也会变得复杂多样,如何做到在复杂环境下对程序执行时间的预测是这个问题的难点。为此,采取将问题限定在特定条件,并将其拆解的做法。首先考虑到模型的普遍性,忽略了专家级操作者通过改变参数影响性能的情况。其次,将程序应用类型限制在数据密集型程序,由于数据密集型程序具有CPU计算较少,I/O花费的时间较多,算法时间的复杂度为多项式时间的特性,有较广的实际应用范围。最终将程序应用的场景分为三类:(1)一类是某一应用程序不做改变,改变的只是数据流的场景,本文使用了KCCA模型进行了预测。该模型可以使用极少的特征就可以较为准确的预测程序执行的时间。但是我们需要从KCCA的推导过程中总结出训练的方法。而且该模型输入的特征与程序类型关联紧密,并不适合做推广,只适合于单一类型的程序预测。(2)为了应对更为复杂多样的场景,提出了基准预测模型的想法。通过对Map Reduce模型执行过程以及中间结果进行分析,根据不同阶段的不同特性提出了使用不同的预测模型进行预测,同时基于集成学习的方法将模型融合,最后验证了该模型对于同一类程序有很好的预测效果。(3)最后,本文提出了元操作的概念,并以算法归约为理论基础,将元操作归约到复杂的算法,并给出了两种适应不同情况的预测方法。一种是基于经验的预测方法。该方法在小数据集上的效果较好。另一种是基于采样预执行的预测方法,该方法更适合大的数据集。