Three steps is all you need:fast, accurate, automatic scaling decisions for distributed streaming d

Three steps is all you need: fast, accurate, automatic scaling decisions for distributed streaming dataflows

流计算本质上是长时间运行的,其工作负载可能会以不可预测的方式发生变化。这又意味着,要保持性能,可能需要动态扩展分配的计算资源。

一些现代的大规模流处理器允许动态扩展,但通常留给用户决定扩展多少的困难任务。这一过程繁琐、缓慢,而且往往效率低下。在支持自动扩展的情况下,策略依赖于粗粒度的指标,如观察到的吞吐量、背压和CPU利用率。因此,它们往往表现出不正确的配置、振荡和较长的收敛时间。 

本文提出DS2,一种用于此类系统的自动扩展控制器,它将流数据流的通用性能模型与轻量级插装相结合,以估计单个数据流操作的真实处理和输出速率。

     将DS2应用于Apache Flink和及时数据流上,验证了DS2的准确性和快速收敛性。与Heron中最先进的Dhalion技术相比,DS2只需一步就能收敛到最优的无背压配置,而不是6步。 

我们在本文中做出了以下贡献。
首先,我们回顾现有的动态伸缩技术如何导致不准确、不稳定或缓慢的供应决策。

 其次,我们提出了DS2,一个用于分布式流数据流自动扩展的通用模型和控制器(§3)。DS2可以在一个扩展决策中准确估计所有数据流操作的并行性,并进行响应式在线操作。因此,DS2在进行扩展决策时消除了振荡和过载。DS2的扩展决策基于实时性能跟踪,并且是通用的:它既不依赖像[13]那样的背压这样的特定信号,也不依赖像[41]那样的简单假设(如1-1操作符选择性)。

第三,DS2利用了现有的最先进的方法:当在Heron中使用时,它在几秒钟和一个步骤中确定了最佳的无反压配置,而Dhalion在相同的场景中执行了六个步骤来达到超额配置(§5.2)。

第四,我们将DS2应用于Apache Flink(§5.3),并展示了动态负载下的流数据流的全自动扩展。

最后,我们展示了DS2对于Apache Flink和及时数据流都是准确且快速收敛的(§5.4和§5.5)。在所有实验中,DS2最多需要3步才能达到最优配置。 

Background and Motivation

本文确定了当前系统缺乏我们想要的控制器属性的两个领域:首先,所使用的指标没有提供足够的信息来就如何重新调整系统做出快速和准确的决定,其次,用于扩展的策略(以及它们所基于的模型)通常是简单的和基于规则的。 

 

 在这个例子中,o1是一个瓶颈,它通过暂停源程序和o2程序的执行来减慢它们的速度。背压意味着外部观察者看到o1处理10 rec/s, o2处理100 rec/s。基于此,策略可能会为o1提供三个额外实例以达到40 rec/s的目标,但它无法准确估计o2的扩展程度,因此需要做出推测决策或应用额外的重新配置步骤。更好的方法是测量操作员时间轴的有用时间,确定o1的真实速率为10 rec/s, o2的真实速率为200 rec/s,推断当o1的并行度增加到4时,o2的并行度也需要加倍才能跟上输出速率。注意,这可以全局计算,即在一个步骤中对数据流中的所有操作符进行计算。

动机:

流量会时高时低,造成机器资源利用率低下。所以,为了应对紧急情况(比如偶尔的促销)以及提高机器资源利用率,我们需要在 job 运行时根据流量的强度调整各个算子的并行度。这便是对于 job 并行度的 reconfiguration,或者叫扩缩容。

要调整流处理系统的并行度一般分为三个步骤:

1. 判断是否需要调整 job 并行度

2.计算 job 里各个算子的新并行度该设为多少

3. 按照新的并行度配置这个 job

所以,我们希望有个动态扩缩容机制,能够自动判断要不要 scaling、自动给出各个算子的新并行度,从而解放应用开发人员。本文便提出了一个更好的流系统动态扩缩容机制来解决这一问题。

实现过程

 DS2与机制无关,可以与任何能够动态改变资源和迁移状态的流处理器集成。图5显示了这种集成的高级体系结构。插装的流作业定期向存储库报告指标。DS2由实现§3.2模型的扩展策略组件和监控存储库的扩展管理器组成,当有新的度量可用时调用策略,并向流处理器发送扩展命令

虽然DS2目前只提供了扩展功能,但可以使用图5所示的倾斜和straggler缓解技术轻松扩展它。在这种情况下,系统将由多功能管理器和策略组件组成,其中第一个检测问题类型(例如,存在倾斜),后者调用适当的策略。请注意,DS2分别从每个算子实例收集度量,因此管理者可以毫不费力地实现倾斜检测。

我们已经将DS2与Apache Flink集成,后者采用了一种简单的扩展机制:当收到指令时,Flink获取一个保存点(保存点是作业状态的一致性快照),然后停止计算,并以更新后的并行度[24]重新部署它。我们在行动中证明了这种集成,并在§5.3中以动态源速率对其进行评估。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值