什么是Apache Flink?-建筑#

Apache Flink是一个用于状态计算的框架和分布式处理引擎无界和有界数据流。Flink的设计初衷是所有通用群集环境,在执行计算内存中速度任何刻度.

在这里,我们解释了Flink架构的重要方面。

处理无边界和有边界数据#

任何类型的数据都是以事件流的形式产生的。信用卡交易、传感器测量、机器日志或网站或移动应用程序上的用户交互,所有这些数据都是以流的形式生成的。

数据可以处理为无界的有界的流。

  1. 无边界的溪流有开始但没有明确的结束。它们不会终止并在生成数据时提供数据。必须连续处理无边界流,即事件被接收后必须立即处理。不可能等待所有输入数据到达,因为输入是无限的,在任何时候都不会完成。处理无界数据通常需要按特定顺序(例如事件发生的顺序)接收事件,以便能够推断结果的完整性。

  2. 边界流有一个明确的开始和结束。在执行任何计算之前,可以通过摄取所有数据来处理绑定流。处理绑定数据流不需要有序接收,因为绑定数据集总是可以排序的。对有界流的处理也称为批处理。

Apache Flink擅长处理无界和有界数据集。对时间和状态的精确控制使Flink的运行时能够在无限流上运行任何类型的应用程序。有界流由专门为固定大小的数据集设计的算法和数据结构进行内部处理,从而产生卓越的性能。

通过探索用例在Flink之上建造的。

随时随地部署应用程序#

Apache Flink是一个分布式系统,需要计算资源才能执行应用程序。Flink与所有常见的群集资源管理器集成,例如Hadoop纱线库伯内特斯但也可以设置为作为独立集群运行。

Flink旨在与前面列出的每个资源管理器进行良好的合作。这是通过特定于资源管理器的部署模式实现的,该模式允许Flink以惯用方式与每个资源管理器交互。

部署Flink应用程序时,Flink会根据应用程序配置的并行度自动识别所需资源,并向资源管理器请求这些资源。如果出现故障,Flink会通过请求新资源来替换出现故障的容器。提交或控制应用程序的所有通信都是通过REST调用进行的。这简化了Flink在许多环境中的集成。

以任何规模运行应用程序#

Flink旨在以任何规模运行有状态流应用程序。应用程序被并行化为数千个任务,这些任务在集群中分布并并发执行。因此,应用程序可以利用几乎无限数量的CPU、主内存、磁盘和网络IO。此外,Flink很容易维护非常大的应用程序状态。它的异步和增量检查点算法确保对处理延迟的影响最小,同时保证精确的状态一致性。

用户报告了令人印象深刻的可扩展性数字对于在生产环境中运行的Flink应用程序,例如

  • 应用处理每天发生数万亿次事件,
  • 应用程序维护数TB状态、和
  • 应用在数千个核心上运行.

利用内存性能#

状态Flink应用程序针对本地状态访问进行了优化。任务状态始终保持在内存中,如果状态大小超过可用内存,则保持在访问效率高的磁盘数据结构中。因此,任务通过访问本地(通常在内存中)状态来执行所有计算,从而产生非常低的处理延迟。Flink通过定期和异步地将本地状态检查指向持久存储,确保在发生故障时的精确状态一致性。