随笔分类 - Flink
摘要:1. 目标 使用Flink读取Kafka数据并实时写入Hive表。 2. 环境配置 EMR环境:Hadoop 3.3.3, Hive 3.1.3, Flink 1.16.0 根据官网描述: https://nightlies.apache.org/flink/flink-docs-release-1
阅读全文
摘要:1. 什么是Debezium Debezium是一个开源的分布式平台,用于捕捉变化数据(change data capture)的场景。它可以捕捉数据库中的事件变化(例如表的增、删、改等),并将其转为事件流,使得下游应用可以看到这些变化,并作出指定响应。 2. Debezium常规使用架构 根据De
阅读全文
摘要:Flink 读写Kafka 在Flink中,我们分别用Source Connectors代表连接数据源的连接器,用Sink Connector代表连接数据输出的连接器。下面我们介绍一下Flink中用于读写kafka的source & sink connector。 Apache Kafka Sour
阅读全文
摘要:应用一致性保障 在Flink中,会自动做检查点,用于故障时恢复一个应用。在恢复时,application的state信息可以根据最近完成的检查点进行重建,并继续运行。不过,仅将一个application的state进行重置并不足以满足exactly-once的保证。 为了给一个应用提供exactly
阅读全文
摘要:Flink 系统配置 Flink 提供了多个配置参数,用于调整Flink的行为与性能,所有参数均在flink-config.yaml 文件中。下面我们介绍一下几个主要配置。 Java and Classloading 默认情况下,Flink启动JVM进程时,会使用系统环境变量里的PATH路径。当然,
阅读全文
摘要:检查点,保存点,与状态恢复 Flink是一个分布式数据处理系统,这种场景下,它需要处理各种异常,例如进程终止、机器故障、网络中断等。因为tasks在本地维护它们的state,Flink必须确保在出现故障的情况下,state不会丢失,并且保持一致性。 在这一节,我们会介绍Flink用于保证exactl
阅读全文
摘要:状态管理 之前我们提到过大多数流应用是有状态的。很多operators会不断的访问并更新某中状态,例如一个window中收集了多少条记录,输入源中当前读到的位置,亦或是用户定义的特定operators的状态。无论是内置的operator还是用户定义的operators,Flink对待它们都是一致的。
阅读全文
摘要:3. 事件-时间(Event-Time)处理 在“时间语义”中,我们强调了在流处理应用中时间语义的重要性,并解释了处理时间与事件时间的不同点。处理时间较好理解,因为它基于本地机器的时间,它产生的是有点任意的、不一致的、以及无法复现的结果。而事件时间的语义产生的是可复现的、一致性的结果,它对于很多流处
阅读全文
摘要:2. Flink中的数据传输 在一个运行的application中,它的tasks在持续交换数据。TaskManager负责做数据传输。TaskManager的网络组件首先从缓冲buffer中收集records,然后再发送。也就是说,records并不是一个接一个的发送,而是先放入缓冲,然后再以ba
阅读全文
摘要:1. 系统架构 Flink是一个分布式系统,用于有状态的并行数据流处理。也就是说,Flink会分布式地运行在多个机器上。在分布式系统中,常见的挑战有:如何对集群中的资源进行分配与管理、协调进程、数据存储的高可用、以及异常恢复。 Flink自身并未实现这些功能,而仅关注在它自身的核心功能 - 分布式数
阅读全文
摘要:状态(State)与一致性模型 接下来我们转向另一个在流处理中十分重要的点:状态(state)。状态在数据处理中是无处不在的。为了产生一个结果,函数一般会聚合某个时间段内(或是一定数量的)events的状态信息(例如计算聚合值,或是发现一个模式),有状态的 operators使用流的输入事件以及内部
阅读全文
摘要:4. 时间语义(Time Semantics) 这章我们会介绍时间语义,以及在流中,对于时间的各种不同的概念的描述。同时我们也会讨论一个流处理器在事件乱序的情况下,如何能提供精准的结果,以及如何使用流对历史events进行处理。 一分钟的含义 假设我们要持续的对流计算并生成结果,例如每一分钟。这里的
阅读全文
摘要:3. 数据流操作 流处理引擎一般会提供一组内置的操作,用于对流做消费、转换,以及输出。接下来我们介绍一下最常见的流操作。 操作分为无状态的(stateless)与有状态的(stateful)。无状态的操作不包含任何内部状态。也就是说,处理此event时,并不需要任何其他历史event的信息,也不需要
阅读全文
摘要:1. Dataflow Programming 在讨论流处理的基本概念之前,我们首先介绍一下数据流编程(dataflow programming)的基本概念与术语。 数据流图 数据流程序一般在由数据流图表示,数据流图描述了数据如何在操作之间流动。在数据流图中,节点被称为operator,代表计算;边
阅读全文
摘要:1. Flink 简介 Flink 是一个分布式流处理器,提供直观且易于使用的API,以供实现有状态的流处理应用。它能够以fault-tolerant的方式高效地运行在大规模系统中。 流处理技术在当今地位愈发重要,因为它为很多业务场景提供了非常优秀的解决方案,例如数据分析,ETL,事务应用等。 2.
阅读全文