论文部分内容阅读
Hadoop是一个分布式系统架构,被广泛应用于大数据的并行处理。MapReduce是Hadoop的一个编程模型,它的性能受到配置参数的显著影响。然而,巨大的参数空间和参数间的相互作用使得不可能手动探索所有参数组合;同时,真实运行一次作业会产生非常大的开销,所以我们必须建立模型来对作业性能进行预测,而不是用实际性能来评估每一套参数。作业性能通常用作业执行时间来表示。目前,针对于作业执行时间的建模,研究方法大致分为两类:第一类是通过公式推导,根据对于MapReduce执行过程的高度掌握,将作业执行各阶段与参数配置的关系用公式表示,经过一步步公式推导,得出最终完成时间,然而这种方式的弊端在于,影响作业性能的参数有很多,公式覆盖能力及其有限,这会忽视其他重要参数,使得优化效果欠佳,同时这也需要建模者对MapReduce有充分的掌握程度,能力要求较高;第二类方法是将对作业性能有重要影响的参数一起作为预测模型的输入,通过训练数据集得到作业执行时间与参数配置的对应模型,但就目前研究来看,现有模型大多考虑了参数,而没有考虑到资源,然而资源对作业性能也有很重要的影响,资源不足时会导致执行速度变慢。另外,现有研究只针对单作业进行调优,而实际中集群中往往有多个作业,为每个作业都进行一次调优是不现实的。因此,本文针对上述问题展开了更深入的研究:1.本文提出了一个基于性能预估的Hadoop参数调优与作业调度框架,为给定集群中的MapReduce作业调整参数配置和调度次序,使得作业性能最优。该框架整体分为三个部分:试运行模块,参数调优与作业调度方案生成模块,方案执行模块。试运行模块负责获取对该作业执行时间进行预估的基准数据,参数调优与作业调度方案生成模块分别针对单作业情况和多作业情况生成作业的参数配置和作业调度方案,方案执行模块负责对方案生成模块生成的方案进行具体实施。2.针对单个作业的性能优化,提出基于资源和作业执行上下文的Hadoop参数调优模型来对其进行最优参数调整。具体地,用随机森林预测每个map、reduce、shuffle的执行时间,然后用装箱算法得到整个作业的执行时间,并将其作为遗传算法的适应度函数。使用随机森林模型来求解每个参数对作业性能的影响权重,将其作为遗传算法的变异概率。最后通过遗传算法迭代搜索最优解,算法输出一组最优的参数配置,使得该作业运行时间最短。3.针对多个作业的性能优化,提出一种基于两段式编码的强化遗传算法来对调度序列和参数进行评估。具体地,将染色体分为调度序列段和参数配置段,这里的适应度函数也分为两部分,分别为该染色体的当前价值和调度序列的前景值。每次交叉和变异之前都分别计算每条染色体遗传前景值和变异前景值,以此计算染色体被选中的概率。算法最终输出最优调度序列和最优参数配置,使得整个作业序列的完成时间最短。最后,用实际收集到的数据对以上模型进行评估。实验结果表明,本文的模型准确度比传统方法更高,且与默认配置相比,作业性能有提升。通过以上研究,本文为Hadoop的作业序列寻找到了一组最优的参数配置,使得作业运行时间最短,这提高了集群性能,节省了时间和资源成本。