Apache Flink 介绍

Flink的前身

Flink  的前身是2008年柏林理工大学的一个研究性项目(Stratosphere)2014年被Apache所接受,然后快速成为ASF的顶级项目之一。

什么是Flink

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

处理无界和有界数据

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

数据可以被作为 无界 或者 有界 流来处理。

无界流

 有定义流的开始 ,但没有定义流的结束。它们不会终止并在生成数据时提供数据。无界流必须被连续处理,即,事件在被摄取后必须被及时处理。无法等待所有输入数据到达,因为输入是无界的,并且在任何时间都不会完成。处理无边界数据通常需要以特定顺序(例如事件发生的顺序)来摄取事件,以便能够推断出结果的完整性。

有界流

有定义流的开始,也有定义流的结束。可以通过在执行任何计算之前提取所有数据来处理有界流。由于有界数据集始终可以排序,因此不需要有序摄取即可处理有界流。绑定流的处理也称为批处理。

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

通过探索基于Flink 的用例来说服自己。

随处部署应用程序

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

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

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

任意规模运行应用程序

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

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

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

利用内存性能

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值