论文部分内容阅读
近年来,随着信息时代的飞速发展,海量的数据被产生和存储。特别是在大数据时代的背景下,人们对于海量数据的挖掘和运用正在成为重要的生产因素。在这种迫切需求下,利用大规模数据系统高效分析和处理海量数据成为了这一领域的关键问题。其中,以Map Reduce为代表的海量数据分析软件架构扮演着越来越重要的角色。Map Reduce软件架构充分利用分布式系统特点,将问题划分为若干子问题并行求解成为海量数据处理的主流方法。因此,子任务的合理划分和协同调度是当前学术界和工业界研究大规模数据处理技术的核心目标。已有的Map Reduce研究成果主要集中于任务的划分算法,系统容错机制,执行时间预测,作业与任务的调度等方面。随着系统规模和数据规模的不断增大,传统的任务划分与调度方法已经不能满足海量数据处理的需求。大规模数据处理系统不仅对系统的容错性提出了更高的要求,海量数据本身的数据特性也将深刻影响Map Reduce中的任务划分与调度问题。因此当前利用Map Reduce分析处理海量数据暴露出许多难以克服的问题:第一,任务执行时间难以预测导致调度策略难以优化。目前Map Reduce中已有的多数工作主要采用模型的方法来预测任务的精确执行时间,并以此作为调度算法的依据。但是在大规模系统中采用复杂模型方法往往开销过大,简单模型预测又不准确。第二,基于精确时间调度算法与实际执行时间存在误差。已有的多数调度算法研究都是基于精确执行时间为基础。然而,任务的执行时间往往带有一定的不确定性,随着系统规模和复杂度的增加,这种不准确性越来越严重,成为导致系统性能不能充分发挥的主要瓶颈。第三,无法处理数据分布特性对调度带来的影响。现有的任务划分和调度算法不考虑数据本身特点对任务执行时间的影响,而在实际应用中,数据的部分特征,比如数据倾斜等,会严重造成务之间工作量的不合理划分,部分工作量较重的任务执行时间会拖长整个作业的执行时间。第四,为充分考虑数据局部性问题。目前对于Reduce任务的数据局部性关注较少。不合理的Reduce任务调度往往不仅会增加网络中的数据传输量,还有可能造成拥塞现象加大了数据传输过程的难度。针对上述技术瓶颈,本文结合大数据和处理系统本身特征,系统地研究了大规模数据处理系统中Map Reduce任务划分与调度关键技术,从以下几个方面展开研究:针对现有基于模型的预测算法精确度差、复杂度高,不适于大规模数据处理系统实际使用的问题,本文深入研究了Map Reduce中作业及任务的执行特点,并提出了一种基于异构环境非精确预测的任务风险调度Risk I,Risk I首先设计了一种基于任务属性和环境特征的相似度算法,在此基础上设计了基于历史相似度匹配的执行时间预测算法。最后特别针对预测结果是带有概率分布的时间段和Map Reduce中任务单位时间收益不统一这些特征,Risk I利用风险决策理论实现了非精确时间的调度算法。该方法比LATE提高了46%的系统吞吐率,极力避免了执行时间不确定性对系统性能带来的损失。针对数据分布特征影响系统性能的问题,本文首先发现传统的前瞻备份执行方法不能有效缩短工作量较重任务的执行时间,而这类任务往往是由于数据倾斜所造成,并成为拖慢作业执行响应时间的直接原因。在此发现的基础上,本文提出了基于数据特征检测的前瞻执行Skew Seize。通过对网络传输数据量的监测以及特征分析,Skew Seize分析了造成最慢任务的原因,特别设计了数据倾斜造成的最慢任务识别算法。通过对任务资源竞争关系分析,Skew Seize识别出与其具有竞争关系的非最慢任务,并通过调度算法选择最适合被迁移的任务和迁移到的节点,并证明其不会造成新的最慢任务。实验结果表明Skew Seize能够有效的将作业的执行时间缩短14%并且有效的避免了资源浪费。针对被动处理最慢任务会带来额外调度开销和资源浪费问题,本文通过对真实数据的特征分析,发现了数据倾斜往往在具有动态性的同时在某一范围内也具有一定的稳定性。利用此特征,本文提出了基于数据倾斜感知的动态任务划分Skew Control。Skew Control通过分析数据特征,首先实现了动态预测数据分布算法。利用此预测,系统能够在缺少先验知识的情况下动态主动地将任务的工作量更合理的划分和调度到不同的异构节点。最后,Skew Control设计了执行结果的反馈机制和调度优化算法,对可能变化的计算环境,不断地精化和细化调整任务之间的划分,从而使得调度效果不断优化。实验表明,与LATE算法和Skew Tune算法相比,Skew Control能够将系统执行效率分别提高了23.8%和17%。针对数据局部性制约系统性能的问题,本文首先分析了Map Reduce系统中不同Reduce任务调度方式对Shuffle阶段数据传输可能带来的变化以及对最终执行时间所带来的影响,分析得到了系统中节点内部,机柜内部和机柜之间不同数据传输带宽的特征。基于以上分析,本文提出了基于数据局部化的Reduce任务调度Jinking,Jinking主要实现了最大化机柜内部网络流量和最大化节点内部网络流量的贪心调度算法。特别针对了在中间数据不可知或者部分可知的情况下,又提出了通过延迟调度和立即次优调度两种算法,来降低网络中数据的传输,主动地避免拥塞。综上所述,本文基于Map Reduce,针对利用大规模数据系统分析处理海量数据技术提出了有效的解决方案,并通过在真实数据集和系统上进行实验验证了所提算法的有效性,对于大规模数据系统分析处理海量数据技术具有一定的理论意义和应用价值。