通过状态快照进行容错 状态后台 Flink管理的键控状态是一种碎片化的.键/值存储,每项键控状态的工作副本都被保存在负责该键的任务管理员的本地某处.操作员的状态也被保存在需要它的机器的本地.Flink会定期对所有状态进行持久化快照,并将这些快照复制到某个更持久的地方,比如分布式文件系统. 在发生故障的情况下,Flink可以恢复你的应用程序的完整状态,并恢复处理,就像什么都没有发生过一样. Flink管理的这种状态被存储在状态后端中.状态后端有两种实现--一种是基于RocksDB的,它是一个嵌入式…
状态和容错 在本节中,您将了解Flink为编写有状态程序提供的API.请看一下Stateful Stream Processing来了解有状态流处理背后的概念. 下一步去哪里? Working with State: Shows how to use state in a Flink application and explains the different kinds of state. The Broadcast State Pattern: Explains how to connect…
本文翻译自官网:The Broadcast State Pattern Provided APIs (提供的api) BroadcastProcessFunction and KeyedBroadcastProcessFunction Important Considerations (注意事项) 使用State描述运算符状态,该运算符状态在恢复时均匀分布在运算符的并行任务中,或者联合使用,整个状态用于初始化已恢复的并行任务. 第三种支持的运营商状态是广播状态. 引入广播状态是为了支持这样的用例…
广播状态模式 在本节中,您将了解如何在实践中使用广播状态.请参考状态流处理,了解状态流处理背后的概念. 提供的API 为了展示所提供的API,我们将在介绍它们的全部功能之前先举一个例子.作为我们的运行示例,我们将使用这样的情况:我们有一个不同颜色和形状的对象流,我们希望找到相同颜色的对象对,并遵循特定的模式,例如,一个矩形和一个三角形.我们假设有趣的模式集会随着时间的推移而演变. 在这个例子中,第一个流将包含具有颜色和形状属性的 Item 类型的元素.另一个流将包含规则. 从Items流开始,我…
有状态程序 在本节中,您将了解Flink为编写有状态程序提供的API.请看一下Stateful Stream Processing来了解有状态流处理背后的概念. 带键值的数据流 如果要使用键控状态,首先需要在DataStream上指定一个键,这个键应该用来分割状态(也包括流中的记录本身).你可以在DataStream上使用keyBy(KeySelector)指定一个键.这将产生一个KeyedDataStream,然后允许使用keyed状态的操作. key selector函数将一条记录作为输入,…
学习Flink:实践培训 本次培训的目标和范围 本培训介绍了Apache Flink,包括足够的内容让你开始编写可扩展的流式ETL,分析和事件驱动的应用程序,同时省略了很多(最终重要的)细节.本书的重点是为Flink管理状态和时间的API提供直接的介绍,希望在掌握了这些基础知识后,你能更好地从更详细的参考文档中获取其余需要了解的内容.每一节末尾的链接将引导你到可以学习更多知识的地方. 具体来说,您将学习 如何实现流数据处理管道 Flink如何以及为何管理国家 如何使用事件时间来持续计算准确的分析…
可查询的状态 注意:可查询状态的客户端API目前处于不断发展的状态,对所提供接口的稳定性不做保证.在即将到来的Flink版本中,客户端的API很可能会有突破性的变化. 简而言之,该功能将Flink的托管键值(分区)状态(参见Working with State)暴露给外界,并允许用户从Flink外部查询作业的状态.对于某些场景来说,可查询状态消除了与外部系统(如键值存储)进行分布式操作/交易的需求,而这往往是实践中的瓶颈.此外,该功能对于调试目的可能特别有用. 注意事项 当查询一个状态对象时,该…
使用DataStream API进行欺诈检测 Apache Flink提供了一个DataStream API,用于构建强大的.有状态的流式应用.它提供了对状态和时间的精细控制,这使得高级事件驱动系统的实现成为可能.在这个分步指南中,你将学习如何使用Flink的DataStream API来构建一个有状态的流应用. 你在建造什么? 在数字时代,信用卡诈骗是一个日益严重的问题.犯罪分子通过行骗或入侵不安全的系统来盗取信用卡号码.盗取的号码通过进行一次或多次小额购物来测试,通常是一美元或更少.如果这样…
术语表 Flink Application Cluster Flink应用集群是一个专用的Flink集群,它只执行一个Flink应用的Flink作业.Flink集群的寿命与Flink应用的寿命绑定. Flink Job Cluster Flink Job Cluster是一个专用的Flink Cluster,它只执行一个Flink Job.Flink Cluster的寿命与Flink Job的寿命绑定. Flink Cluster 一个分布式系统由(通常)一个JobManager和一个或多个Fl…
流式分析 事件时间和水印 介绍 Flink明确支持三种不同的时间概念. 事件时间:事件发生的时间,由产生(或存储)该事件的设备记录的时间 摄取时间:Flink在摄取事件时记录的时间戳. 处理时间:您的管道中的特定操作员处理事件的时间. 为了获得可重复的结果,例如,在计算某一天股票在交易的第一个小时内达到的最高价格时,您应该使用事件时间.这样一来,结果就不会依赖于计算的时间.这种实时应用有时会使用处理时间,但这样一来,结果就会由该小时内恰好处理的事件决定,而不是由当时发生的事件决定.基于处理时间的…