关键词:
流数据处理系统
资源弹性管理
排队论
强化学习
参数调优
摘要:
随着物联网和移动互联网的快速发展,大量智能终端开始接入网络,并持续产生着海量的流式数据。流数据处理是一种新兴的内存计算范式,它使用“到达即处理”策略来实时处理动态变化的数据流。流拓扑是由多个流数据处理节点相互连接构成的有向无环图,它代表了应用程序的流数据处理逻辑。虽然已有大量的分布式流数据处理系统被提出以简化流拓扑的开发工作,但却无法为流拓扑提供自动化的资源管理方法。面对流式数据负载的持续动态变化,在满足实时分析需求的前提下,如何让流拓扑尽量节省计算资源成为该领域的研究热点。
流拓扑一般由多个流数据处理节点构成。节点之间相互连接,存在错综复杂的依赖关系。针对某个节点的资源调整将会对其他节点产生直接或间接影响。如何针对节点间复杂的依赖关系进行建模,在资源分配时实现流拓扑整体性能的优化,成为资源弹性管理的重要挑战;当流拓扑被部署到生产环境后,环境状态会不断发生变化,容易导致静态的资源管理策略失效。如何适应环境变化以持续高效的管理流拓扑的计算资源也是资源弹性管理的挑战之一;流数据处理系统和资源弹性管理策略都为不同流拓扑提供了大量的可配置参数。流拓扑需要在负载场景下才能对这些参数进行有效调优。如何更高精度的捕获和还原流拓扑的负载场景,以及如何使用较少的计算资源完成流拓扑可配置参数的调优,也是资源弹性管理面临的挑战。
针对上文所述的诸多挑战,为了系统的解决面向流式大数据处理的资源弹性管理问题,本文分别研究了性能建模、自适应进化、负载模拟和参数优化等四个方面。具体的研究内容及贡献总结如下:
(1)针对复杂流拓扑的性能建模问题,本文提出面向有限缓冲区流数据处理节点的排队论建模方法。流拓扑中每个数据处理节点的缓冲区都是有限的,缓冲区满时会阻塞上游节点,从而引入额外的性能代价,这是流拓扑性能建模时需要考虑的重要影响因素之一。在对流拓扑进行性能建模时,暂未发现有研究考虑过网络缓冲区对流拓扑性能的影响。为此,本文提出了扩展排队网络模型,为有限缓冲区的复杂流拓扑建立轻量化、高精度的性能模型,并基于该模型提出了两种面向不同性能指标的资源管理算法。
(2)针对环境变化引起的策略失效问题,本文提出基于多智能体深度强化学习的流拓扑资源弹性管理方法。当流拓扑被部署后,生产环境拥有复杂而不确定的状态变化。已有研究为流拓扑引入强化学习模型,使流拓扑可以通过学习来自适应环境的变化。然而当前研究仅针对独立的流数据处理节点引入强化学习模型,并未考虑节点间的协同合作关系。为此,本文使用完全协作的多智能体深度强化学习模型来控制流拓扑计算资源的实时调整。本文引入了多种协同模型,并对比并分析了不同模型的优劣,验证了多智能体强化学习算法的有效性。
(3)针对流拓扑负载场景的高精度捕获和还原问题,本文提出面向资源弹性管理的分布式负载模拟方法。在大数据背景下,当前研究中缺少大规模高精度的负载模拟方法,大量的资源弹性管理策略仅能使用小规模负载来评测弹性策略的有效性。为此,本文提出一种分布式负载模拟方法。该方法基于开源并行化框架具有良好的通用性,通过同步策略可实现更高精度的负载模拟,通过并行化的测试数据收集和分析可有效缩短评测时间。
(4)针对流拓扑大量参数的调优问题,本文提出基于计算时延模拟的参数优化方法。该方法是一种折衷真实环境与仿真环境的优化方法,通过容器技术来还原目标集群的配置环境,通过时延拓扑来模拟目标拓扑的资源消耗。该方法可以使用更少的计算资源来完成近似真实系统的参数优化。