Flink 概述
Flink 是一个用于进行大规模数据处理的开源框架,它提供了一个流式的数据处理 API,支持多种编程语言和运行时环境。Flink 的核心优点包括:
- 低延迟:Flink 可以在毫秒级的时间内处理数据,提供了低延迟的数据处理能力。
- 高吞吐:吞吐量巨大。
- 分布式计算:Flink 支持分布式计算,它可以在大规模集群上运行,并提供了高可用和容错机制。
- 流式数据处理:Flink 基于流式数据处理模型,支持实时数据处理和数据增量更新。
- 事件驱动:Flink 的计算引擎是基于事件驱动的,它使用消息传递机制来处理数据。
Flink 的数据处理流程
Flink 的数据处理流程包括以下几个步骤:
- 数据输入:Flink 可以从各种数据源中读取数据,如 Kafka、HDFS 等。
- 数据转换:Flink 可以使用 DataStream API 或 SQL API 对数据进行转换和处理。
- 数据分区:Flink 可以根据数据的属性或规则对数据进行分区,以便在分布式集群上进行处理。
- 数据传输:Flink 可以使用网络传输机制将数据传输到其他节点或进程。
- 数据输出:Flink 可以将处理后的数据写入到各种数据存储中,如 Kafka、HDFS 等。
Flink架构解析
Flink 运行时由两种类型的进程组成:一个 JobManager 和一个或者多个 TaskManager。
JobManager
类似于司令官,分配工作给干活的士兵(TaskManager),听取士兵的汇报,当士兵失败时做出恢复等反应。
JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。这个进程由三个不同的组件组成:
- ResourceManager
- ResourceManager 负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots