论文部分内容阅读
随着大数据处理技术的不断发展,分布式流处理系统也在越来越多的数据处理应用中发挥作用。云计算的飞速发展也使得许多中小企业和研究人员能够通过租用的形式享受集群带来的数据处理的快速和便捷,也使得流处理技术发挥出更大的应用价值。而如何对流处理任务进行分配调度是分布式流处理系统中的一个重要问题。目前流处理平台上有许多不同的调度算法,这些调度算法主要关注如何提高作业的吞吐量或降低作业延迟。在有限的分布式流处理集群中,集群资源通常是固定的,如果其容纳的流处理任务越多,则集群的资源利用率便越高,所带来的价值越大。因此如何最大化集群中可运行的流处理业务的数量,也是一个重要的问题。由于流处理任务是持续不断运行的,在运行过程中,其处理的数据的速率通常会随时间变化。如果能够根据流处理作业的负载,动态对其组件进行调整,便可减少其对整体集群的资源占用。基于如上思路,本文首先对现有流处理系统的调度算法进行阐述和比较,并重点关注如下调度问题:在满足流处理任务运行情况的同时,如何调度才能最小化其所占用的资源?本文基于按需分配的思想,结合流处理自身的特点,提出了 MRU调度算法。该算法基于通用的流数据处理抽象,可较容易地应用于当前的流数据处理系统中。算法首先对流处理任务拓扑结构进行分析,基于分析结果对任务进行初始分配;在流处理任务运行过程中,对其进行状态收集,并基于历史数据对数据量和资源占用进行预测;且依据排队理论,对流处理数据的平均计算时间进行估算,并依此对分配方案进行动态调整。随后,我们对提出的一系列算法进行了复杂度分析。随后,本文基于Storm分布式流处理平台,给出了实现的系统架构。基于该系统架构,我们实现了本文提出的算法,并实现了 MRU-Naive算法作为参照。实验使用这两种算法与Storm默认的静态调度算法进行对比和分析。结果表明MRU算法能够较好的处理变化的数据流,对减少流处理任务的资源占用有显著的效果。