Apache Flink - 架构


Apache Flink 工作在 Kappa 架构上。Kappa架构有一个单一的处理器——流,它将所有输入视为流,流引擎实时处理数据。kappa架构中的批量数据是流式传输的一个特例。

下图展示了Apache Flink 架构

Apache Flink 架构

Kappa 架构的关键思想是通过单个流处理引擎处理批量和实时数据。

大多数大数据框架都基于 Lambda 架构,该架构具有用于批处理和流数据的单独处理器。在 Lambda 架构中,批处理视图和流视图有单独的代码库。为了查询和获取结果,需要合并代码库。不维护单独的代码库/视图并将它们合并是一种痛苦,但 Kappa 架构解决了这个问题,因为它只有一个实时视图,因此不需要合并代码库。

这并不意味着 Kappa 架构取代了 Lambda 架构,它完全取决于用例和应用程序来决定哪种架构更可取。

下图展示了 Apache Flink 作业执行架构。

执行架构

程序

它是一段在 Flink 集群上运行的代码。

客户

它负责获取代码(程序)并构建作业数据流图,然后将其传递给JobManager。它还检索作业结果。

工作经理

从Client接收到Job Dataflow Graph后,它负责创建执行图。它将作业分配给集群中的TaskManager并监督作业的执行。

任务管理器

它负责执行JobManager分配的所有任务。所有任务管理器以指定的并行度在各自的插槽中运行任务。它负责将任务的状态发送给JobManager。

Apache Flink 的特点

Apache Flink 的特点如下:

  • 它有一个流处理器,可以运行批处理和流程序。

  • 它可以以闪电般的速度处理数据。

  • API 可用于 Java、Scala 和 Python。

  • 提供所有常用操作的API,方便程序员使用。

  • 以低延迟(纳秒)和高吞吐量处理数据。

  • 它的容错能力。如果节点、应用程序或硬件出现故障,不会影响集群。

  • 可以轻松与Apache Hadoop、Apache MapReduce、Apache Spark、HBase等大数据工具集成。

  • 可以定制内存管理以实现更好的计算。

  • 它具有高度可扩展性,可以扩展到集群中的数千个节点。

  • Apache Flink 中的窗口化非常灵活。

  • 提供图形处理、机器学习、复杂事件处理库。