FLINK 学习随笔一

事件驱动应用程序的限制取决于流处理器处理时间和状态的能力。Flink 的许多出色功能都围绕这些概念展开。Flink 提供了一组丰富的状态原语,可以管理非常大的数据量(高达数 TB),并保证一次性一致性。此外,Flink 对事件时间的支持、高度可定制的窗口逻辑以及对时间的细粒度控制,ProcessFunction使高级业务逻辑的实现成为可能。此外,Flink 还提供了一个用于复杂事件处理(CEP)的库来检测数据流中的模式。

但是,Flink 对于事件驱动应用程序的突出特点是保存点。保存点是一致的状态图像,可用作兼容应用程序的起点。给定一个保存点,可以更新应用程序或调整其规模,或者可以启动应用程序的多个版本进行 A/B 测试。

借助复杂的流处理引擎,还可以实时执行分析。流式查询或应用程序不是读取有限的数据集,而是摄取实时事件流,并随着事件的消耗不断产生和更新结果。结果要么写入外部数据库,要么作为内部状态进行维护。Dashboard 应用程序可以从外部数据库读取最新结果或直接查询应用程序的内部状态。

FLINK 学习随笔一

Flink 的 DataStream API 或 DataSet API 提供了更多的底层控制。此外,Flink 的 Gelly 库为批量数据集的大规模和高性能图形分析提供了算法和构建块。

什么是数据管道?

Extract-transform-load (ETL) 是一种在存储系统之间转换和移动数据的常用方法。通常会定期触发 ETL 作业,以将数据从事务数据库系统复制到分析数据库或数据仓库。

数据管道的用途与 ETL 作业类似。他们转换和丰富数据,并可以将其从一个存储系统移动到另一个存储系统。但是,它们以连续流模式运行,而不是定期触发。因此,他们能够从持续生成数据的源中读取记录,并以低延迟将其移动到目的地。例如,数据管道可能会监视文件系统目录中的新文件并将其数据写入事件日志。另一个应用程序可能将事件流具体化到数据库或增量构建和细化搜索索引。

下图描述了周期性 ETL 作业和连续数据管道之间的区别。

FLINK 学习随笔一

Flink 的 SQL 接口(或 Table API)及其对用户定义函数的支持可以解决许多常见的数据转换或丰富任务。使用更通用的 DataStream API 可以实现更高要求的数据管道。Flink 为各种存储系统提供了丰富的连接器集,例如 Kafka、Kinesis、Elasticsearch 和 JDBC 数据库系统。它还具有用于文件系统的连续源,用于监视以分时方式写入文件的目录和接收器。

DataStream API 的深度批处理/流式统一

DataStream API是 Flink 的物理API,用于用户需要非常明确地控制数据类型、流、状态和时间的用例。此 API 正在不断发展,以支持对有界数据的高效批处理执行。

统一的 SQL 平台

社区一直在将 Flink 构建为统一(批处理和流式)SQL 分析平台的强大基础,并将继续这样做。

SQL 具有非常强大的跨批处理流语义,允许用户将相同的查询用于临时分析和连续查询。Flink 已经包含一个高效的统一查询引擎,以及广泛的集成。随着用户的反馈,这些得到不断改进。

更多连接器和变更数据捕获支持

好书连接:《Flink原理与实践》:中文领域最详细的Flink入门教程 | Weizheng

上一篇:flink的伪分布式搭建


下一篇:大数据虚拟机集群搭建