论文部分内容阅读
在大数据时代,如何实时处理海量、高速的大数据来快速提取其中的价值成为当前计算机系统领域面临的重要挑战。分布式流处理系统成为有效应对大数据实时计算挑战的基石。许多优秀的分布式流处理系统在业界得到广泛部署和使用。这些系统可以归为两类,一类是将流数据离散化为微批处理的批流系统;另一类是按照一条条记录流水线处理的连续流系统。在这两类分布式流处理系统中,任务调度和数据调度机制对于保证高吞吐、低延迟的系统性能有决定性的影响。然而,当前分布式流处理系统中调度机制的设计没有考虑到作业部署和运行时的特征,无法高效地调度任务和数据,严重降低流应用的性能。因此,如何结合流处理系统作业部署和运行时特征来进行任务调度和数据调度,是流应用程序得以高效执行的关键问题。
首先,当前的批流系统由于硬件更新和资源共享等原因常常是运行在异构集群的环境下,而它的任务调度机制由于块同步并行模型的限制,慢结点任务在批流系统中广泛存在并且严重影响应用程序的性能。传统批流系统中针对慢结点任务的处理机制是一种滞后的反应式机制,属于后调度方法。当使用这些方法来处理批流系统中的慢结点任务时不可避免地会导致较长的作业延迟和较高的资源开销。为了解决这一问题,基于预调度的慢结点任务减缓机制利用批流系统微批作业的周期性特征,通过分析微批作业的历史运行信息识别潜在慢结点,并引入迭代学习控制模型评估每个结点的计算能力,进而在下一个批次到来之前提前划分并迁移慢结点任务的负载,从而有效地避免了慢结点任务的产生。
其次,通过对真实生产线上批流系统运行的日志数据分析发现,批流系统的运行环境不仅资源是异构的,任务也是异构的。而现有批流系统任务调度机制的设计都是针对同构环境,它们根据数据局部性和空闲槽的可用性来调度任务,不考虑不同任务之间的负载大小和不同空闲槽之间的计算能力的差别,这会使得批流系统在资源异构和任务异构的环境下会出现严重的性能下降。同时,一些针对于异构环境下任务调度机制的改进和优化都是一种在任务已经落后并影响作业执行之后的补偿策略,不能有效缓解异构性对批流系统性能造成的影响。为了解决这一问题,基于结点能力感知的任务调度机制通过感知任务大小和结点计算能力来预窃取慢机器上的大任务到快机器上,同时按照大任务优先的原则进行任务调度,在调度进行到最后几波时,按照每个结点的计算能力选择任务队列中相对应次序的小任务来填充空闲槽,实现有效的负载均衡,降低任务的长尾延迟。
最后,连续流处理系统的数据调度机制对系统性能有至关重要的影响。然而,现存的分布式流处理系统中的数据调度机制主要可以被分为四大类:原生机制(如随机和轮询)、面向数据倾斜的优化、面向集群异构的优化、动态负载感知的优化。这些传统机制都没有考虑两个通信的操作符之间的网络距离。而来自不同网络通道内的网络流量由于底层通信机制的差别会对系统性能产生非常显著的影响。如何根据网络距离来分发元组成为连续流处理系统领域的一个关键问题。为了解决这一问题,基于网络感知的数据调度机制通过识别两个通信的操作符任务之间的网络距离,采用权重分组机制来为不同网络距离的下游操作符分配不同的权重以控制发送元组的数量,同时,为了应对集群环境的变化,采用动态权重控制机制根据各个下游操作符内元组的执行情况来动态调整每个网络通道的权重。
综上所述,通过结合作业部署和运行时特征,从不同角度对分布式流处理系统中的任务调度和数据调度机制进行研究,形成一系列基于运行时特征感知的流处理系统调度优化方法,可以有效改善分布式流处理系统的性能。
首先,当前的批流系统由于硬件更新和资源共享等原因常常是运行在异构集群的环境下,而它的任务调度机制由于块同步并行模型的限制,慢结点任务在批流系统中广泛存在并且严重影响应用程序的性能。传统批流系统中针对慢结点任务的处理机制是一种滞后的反应式机制,属于后调度方法。当使用这些方法来处理批流系统中的慢结点任务时不可避免地会导致较长的作业延迟和较高的资源开销。为了解决这一问题,基于预调度的慢结点任务减缓机制利用批流系统微批作业的周期性特征,通过分析微批作业的历史运行信息识别潜在慢结点,并引入迭代学习控制模型评估每个结点的计算能力,进而在下一个批次到来之前提前划分并迁移慢结点任务的负载,从而有效地避免了慢结点任务的产生。
其次,通过对真实生产线上批流系统运行的日志数据分析发现,批流系统的运行环境不仅资源是异构的,任务也是异构的。而现有批流系统任务调度机制的设计都是针对同构环境,它们根据数据局部性和空闲槽的可用性来调度任务,不考虑不同任务之间的负载大小和不同空闲槽之间的计算能力的差别,这会使得批流系统在资源异构和任务异构的环境下会出现严重的性能下降。同时,一些针对于异构环境下任务调度机制的改进和优化都是一种在任务已经落后并影响作业执行之后的补偿策略,不能有效缓解异构性对批流系统性能造成的影响。为了解决这一问题,基于结点能力感知的任务调度机制通过感知任务大小和结点计算能力来预窃取慢机器上的大任务到快机器上,同时按照大任务优先的原则进行任务调度,在调度进行到最后几波时,按照每个结点的计算能力选择任务队列中相对应次序的小任务来填充空闲槽,实现有效的负载均衡,降低任务的长尾延迟。
最后,连续流处理系统的数据调度机制对系统性能有至关重要的影响。然而,现存的分布式流处理系统中的数据调度机制主要可以被分为四大类:原生机制(如随机和轮询)、面向数据倾斜的优化、面向集群异构的优化、动态负载感知的优化。这些传统机制都没有考虑两个通信的操作符之间的网络距离。而来自不同网络通道内的网络流量由于底层通信机制的差别会对系统性能产生非常显著的影响。如何根据网络距离来分发元组成为连续流处理系统领域的一个关键问题。为了解决这一问题,基于网络感知的数据调度机制通过识别两个通信的操作符任务之间的网络距离,采用权重分组机制来为不同网络距离的下游操作符分配不同的权重以控制发送元组的数量,同时,为了应对集群环境的变化,采用动态权重控制机制根据各个下游操作符内元组的执行情况来动态调整每个网络通道的权重。
综上所述,通过结合作业部署和运行时特征,从不同角度对分布式流处理系统中的任务调度和数据调度机制进行研究,形成一系列基于运行时特征感知的流处理系统调度优化方法,可以有效改善分布式流处理系统的性能。