学习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为编写有状态程序提供的API.请看一下Stateful Stream Processing来了解有状态流处理背后的概念. 带键值的数据流 如果要使用键控状态,首先需要在DataStream上指定一个键,这个键应该用来分割状态(也包括流中的记录本身).你可以在DataStream上使用keyBy(KeySelector)指定一个键.这将产生一个KeyedDataStream,然后允许使用keyed状态的操作. key selector函数将一条记录作为输入,…
执行模式(批处理/流处理) DataStream API 支持不同的运行时执行模式,您可以根据用例的要求和作业的特点从中选择.DataStream API 有一种 "经典 "的执行行为,我们称之为 STREAMING 执行模式.这应该用于需要连续增量处理并预计无限期保持在线的非绑定作业.此外,还有一种批式执行模式,我们称之为BATCH执行模式.这种执行作业的方式更容易让人联想到批处理框架,如MapReduce.这应该用于有边界的作业,对于这些作业,你有一个已知的固定输入,并且不会连续运…
Flink DataStream API编程指南 Flink中的DataStream程序是对数据流实现转换的常规程序(如过滤.更新状态.定义窗口.聚合).数据流最初是由各种来源(如消息队列.套接字流.文件)创建的.结果通过汇流返回,例如可以将数据写入文件,或标准输出(例如命令行终端).Flink程序可以在各种环境下运行,独立运行,或者嵌入到其他程序中.执行可以发生在本地JVM中,也可以发生在许多机器的集群中. 为了创建你自己的Flink DataStream程序,我们鼓励你从一个Flink程序的…
Flink架构 Flink是一个分布式系统,为了执行流式应用,需要对计算资源进行有效的分配和管理.它集成了所有常见的集群资源管理器,如Hadoop YARN.Apache Mesos和Kubernetes,但也可以设置为独立集群甚至作为库运行. 本节包含对Flink架构的概述,并描述其主要组件如何交互执行应用程序并从故障中恢复. Flink集群的解剖 Flink运行时由两种类型的进程组成:一个JobManager和一个或多个TaskManagers. 客户端不是运行时和程序执行的一部分,而是用来…
及时的流处理 介绍 及时流处理是有状态流处理的一种扩展,其中时间在计算中起着一定的作用.其中,当你做时间序列分析时,当做基于某些时间段(通常称为窗口)的聚合时,或者当你做事件处理时,事件发生的时间很重要时,都是这种情况. 在下面的章节中,我们将着重介绍一些您在使用及时Flink应用时应该考虑的主题. 时间概念:事件时间和处理时间 当在流程序中提到时间时(例如定义窗口),可以提到不同的时间概念. - 处理时间.处理时间指的是正在执行相应操作的机器的系统时间.
当流程序在处理时间上运行时,所有基于时…
概念-概览 实践培训解释了作为Flink的API基础的有状态和及时流处理的基本概念,并提供了这些机制如何在应用中使用的例子.有状态的流处理是在数据管道和ETL的背景下介绍的,并在容错部分进一步发展.在 "流分析 "一节中介绍了及时的流处理. 本概念深度部分提供了对Flink的架构和运行时如何实现这些概念的更深入理解. Flink的API Flink为开发流式/批处理应用提供了不同层次的抽象. - 最底层的抽象只是提供有状态和及时的流处理.它通过处理函数嵌入到DataStream API…