apache flink_Apache Flink流处理中的保存点–白板演练

apache flink

在本周的白板演练中,Apache Flink的PMC成员和数据工匠的首席技术官Stephan Ewen解释了如何使用保存点(Apache Flink流处理中的独特功能)来重新处理数据,进行错误修复,处理升级以及做A / B测试。

这是未经编辑的抄录:

你好。 我叫斯蒂芬。 我是Apache Flink的原始创建者之一,也是数据工匠的CTO。 今天,我想告诉您一些有关使用Apache Flink进行流处理的信息。 特别是,我将讨论Flink的一项独特功能,即保存点,以及保存点对流处理中的几个操作问题的适用性,例如您如何进行重新处理? 您如何升级正在运行的程序? 您如何解决错误? 您如何进行AP测试?

在本次演讲中,我将假设一个非常经典的流处理设置。 我们有消息总线或日志服务。 它可能是MapR Streams或Apache Kafka。 事件正在添加到日志中。 另一方面,我们有一个流处理器,这里是Apache Flink,它从日志中提取消息并计算这些事件的流分析。

我在这里选择的示例是流处理器基于这些事件的会话化来计算一组统计信息。 您可以将这些会话视为传感器数据突发,或者是与特定服务的用户交互会话。 流处理器对事件进行会话化,然后将某些会话分类为离群值,或者仅计算会话长度或对其进行分类。 设置完该应用程序后,它将连续运行。 事件被添加到消息总线中,流处理器将其选中,然后将其追加,从而增加会话数。

在某个时间点,您可能真正想做的是升级流应用程序,因为您想出了一种新方法来对离群值进行分类,或者您可能希望进行会话化稍有不同。 另一种可能是您在应用程序中引入了一个错误,而您实际上想重新处理数据。 我说回去一周,使用该程序的bug固定版本,然后重新处理最后一周的数据,并用适当的结果替换所有内容。

让我以它为例。 您如何在连续应用程序(例如流应用程序)中执行此操作? 在Apache Flink中执行此操作的方法是使用savepoints功能。 使用保存点功能,您可以为整个流应用程序制作时间点快照。 该时间点快照将包含有关您在输入流中的确切位置的信息,并将包含有关该时间点的暂挂状态或正在进行的会话的所有信息。 您可以将其视为概念上的“停止”流式应用程序,对其进行拍照,然后继续。 尽管实际上可以在不停止应用程序的情况下执行此操作; 它将完全在后台运行。

如果我们运行此应用程序以及任何流应用程序,则只需使用实用程序并告诉它,“请立即获取该应用程序的保存点。” 该保存点通常存储在诸如分布式文件系统之类的东西上。 就像我说的那样,它将包含有关当前流应用程序在输入流中的位置以及待处理阶段(流应用程序生命周期中当前处于运行状态)的元数据。 例如,它将不再包含已完成的该会话。 它不会包含此处尚未解决的任何要点。 这里的保存点包含这两个部分的信息。 然后,您可以做的是获取程序,将其停止,然后告诉系统“请从该保存点重新启动该程序。” 从概念上讲,这将使整个应用程序后退一周,或者倒退您使用保存点的时间。 您还可以对程序进行修改,然后从该保存点恢复。 这样,您可以升级程序,或者您可以说:“我从保存点回来一周就升级了该程序。 在升级过程中,我引入了一个错误。 我实际上没有对它进行错误修复。” 您将再次返回并使用固定版本对其进行重新处理。

使用此功能的另一种非常强大的方法是进行AB测试。 让我们在程序中将此变体称为“变体A”。 在某个时间点,您对如何提高推荐者有了一个想法。 如何改进离群异常分类。 在这种情况下,您将采取程序A的一个保存点,将其存储在其中,然后编写该程序的B变体。 然后,程序的B变体也可以从该保存点启动。 这将与变体A同时运行,并在您获取变体A的保存点的那一点上准确地拾取,从变体A拾取进行中的会话,然后从那里继续进行计算。

保存点功能实际上并没有严格地关联保存点和作业,这使您甚至可以创建与B不同的保存点,以及从A创建另一个保存点。您可以将此程序B从程序A移至该保存点或者,您甚至可以从A,B的更高保存点或A的更高保存点处理变体C,这几乎是整个连续应用程序的版本控制快照机制。 版本控制会同时考虑这两个方面:输入内容和应用程序状态。

另一个强大的使用方式是,如果消息总线上的容量有限(这对于Apache Kafka尤其重要,因为Apache Kafka的数据在特定时间点后将退出)。 您希望至少可以回滚应用程序,直到数据仍保留在Kafka中,但是您不必再回滚。 您永远不必依赖特定时间点以上的数据。 因此,这些保存点实际上可以为您提供可以退休的数据点,因为您总会有一个回退点,该回退点过去不远,并且不依赖消息提示中的较早数据。

感谢收看。 如有任何疑问,请将其添加到下面的评论部分。

翻译自: https://www.javacodegeeks.com/2016/07/savepoints-apache-flink-stream-processing-whiteboard-walkthrough.html

apache flink

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值