flink 什么是fink(一)flink架构

文章目录

  • flink架构
    • 处理无界流和有界流
    • 随处部署应用程序
    • 以任何规模运行应用程序
    • 利用内存性能

flink架构

flink是一个框架和分布式处理引擎,它被用于对无界和有界数据流进行有状态计算。flink被设计成可以运行在所有常见的集群环境中,并以内存速度和任何规模执行计算。

处理无界流和有界流

任何种类的数据都是作为事件流产生的。

数据可以作为无界流和有界流进行出来。

  1. 无界流:无界流是一个又开始但是没有定义结束的数据流。无界流必须实时的处理,不可能等待所有数据到达后再处理,这是不可能的,因为无界流是无限的,任何时候都不会结束。处理无界流需要按照特定的顺序接收事件,例如事件发生的顺序,以便能够对结果的完整性进行推理。
  2. 有界流:有界流定义了开始和结束。有界流可以在执行任何计算之前获取所有的待计算的数据。处理有界流不需要有序的输入,因为有界流数据总是可以排序的,有界流的处理也成为批处理。

flink 什么是fink(一)flink架构_第1张图片

**flink 擅长处理无界和有界数据集。**对时间和状态的精确控制使flink运行时能够在无界流上运行任何类型的应用程序。对于有界流,flink内部有专门的算法和数据结构进行处理,具有卓越的性能。

随处部署应用程序

flink是一个分布式系统,需要系统资源才能执行应用程序。flink能够集成所有通用的资源管理器,例如hadoop yarn、apache mesos、kubernetes,而且也可以独立部署。

Flink被设计成能够很好地工作于前面列出的每个资源管理器。这是通过特定于资源管理器的部署模式实现的,这种部署模式允许Flink以其惯用的方式与每个资源管理器交互。

当部署flink应用程序的时候,flink会根据应用程序配置的并行度自动计算所需要的计算资源,并从资源管理其中申请所需要的资源。如果发生故障,flink会通过重新请求资源来替换失败的Container。提交或者控制应用程序的所有通信都是通过REST调用进行的。这简化了flink在许多环境中的集成。

以任何规模运行应用程序

Flink被设计为在任何规模上运行有状态流的应用程序。应用程序被并行地分成数千个任务,这些任务分布在一个集群中并并发地执行。因此,应用程序可以几乎不受限制的使用cpu、主内存、磁盘和网络IO。而且,Flink可以轻松维护非常大的应用程序状态。它的异步和增量检查点算法确保了对处理延迟的最小影响,同时保证了精确一次的状态一致性。

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

  • 每天处理数万亿个事件的应用程序,
  • 维护数 TB 状态的应用程序,以及
  • 在数千个内核上运行的应用程序。

利用内存性能

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

flink 什么是fink(一)flink架构_第2张图片

你可能感兴趣的:(flink,flink)