Flink简单教学1-什么是Flink

什么是Flink

官方翻译

Apache Flink是一个分布式处理引擎,用于无界和有界数据流上的有状态计算。Flink可以在大部分常见的集群和任何内存规模中运行。

处理无界数据(Unbounded and Bounded Data)

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

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

  1. 无界流有定义的开始,但没有结束。它们不会在数据生成时终止并提供数据。无界的流必须连续处理,即事件被摄入后必须立即处理。不可能等待所有输入数据的到来,因为输入是无界的,在任何时候都不会完成。处理无界数据通常需要以特定的顺序(例如事件发生的顺序)接收事件,以便能够推断结果的完整性。
  2. 有界流有一个定义的开始和结束。在执行任何计算之前,可以通过摄取所有数据来处理有界流。处理有界的流并不需要有序的摄取,因为有界的数据集总是可以排序的。对有界流的处理也称为批处理。

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

在任何地方部署你的应用

Apache Flink是一个分布式系统,需要计算资源来执行应用程序。Flink集成了所有常见的集群资源管理器,如Hadoop YARN、Apache Mesos和Kubernetes,但也可以设置为作为独立的集群运行。

Flink的设计目的是能很好工作在所有常见的资源管理器上。这是通过特定于资源管理器和部署模式实现的,该模式允许Flink以其惯用的方式与每个资源管理器交互。

在部署Flink应用程序时,Flink根据应用程序配置的并行性自动识别所需的资源,并从资源管理器中请求它们。在失败的情况下,Flink通过请求新的资源来替换失败的容器。所有提交或控制应用程序的通信都是通过REST调用进行的。这在许多环境中简化了Flink的集成。

以任何规模运行应用程序

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

良好的运用了内存的性能

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

为什么要选用Flink

因为我不太懂Spark和Storm没法自己做比较,引用一个大佬的话。简单却明了的说明了区别。

“最开始,我们觉得 Storm 的使用人数比较多,但感觉这个技术没有 High Level 的 API,也不够丰富,写起来成本比较高,没有 SQL 语言,也不能做批量计算,只是一个纯流式的计算,不能做好批流融合这种全能的计算能力,只能解决局部的问题。相比较而来,Spark 是一个比较完整的计算引擎,也可以做批量计算,但是流式计算的速度会很慢,要一段段执行,并不是真正的纯流式技术,所以我们决定选择 Flink。”–来自一个阿里大佬的回答。

关注我的公众号

了解我的最新动向
qrcode_for_gh_eac3d4651e58_344

收藏我的个人博客

下一篇-本地安装和运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值