Flink基本概念

原创 2018-06-09 10:51 阅读(155)次

Flink基本介绍

Flink官网入口在介绍flink前,先介绍了数据集模型和执行模型。我想这里主要是为了跟spark做对比。

数据集类型有两种

有界,不变的数据集。

无限,持续追加的数据集。很多时候认为是有界的数据其实是无界的,比如服务器上的日志,每天变动的股票市场交易,用户对互联网的访问,正在来临的物联网时代的传感器信息。

执行模型也分为两种:

streaming:流式处理,连续的,一条条的处理到来的数据

batch:处理有限的时间段内数据,完成后然后释放资源

这两种执行模式都可以应用在有界或者无界的数据集上,虽然未必是最好的选择。现在大名鼎鼎的spark streaming就是使用batch的方式处理无界的数据,这是由spark的数据模型RDD所决定的。所以经常会有文章说spark streaming不是真正的实时流数据处理框架,而storm是真正实时的。这里我们先不扩展介绍他们,专注flink。

flink是用streaming模式去处理无界数据。显然这是一种处理无界数据更好的执行模式。而且他还有很多其他的改进,比如延迟性上相比batch就是很大的提升。

首先他对于数据的延误和无序的问题上有了更好的设计来解决。同时满足容错恢复,大规模部署和高吞吐量。

Flink的流式计算模型启用了很多功能特性,如状态管理,处理无序数据,灵活的视窗,这些功能对于得出无穷数据集的精确结果是很重要的。

Flink保证状态化计算一致性语义。”有状态“意味着应用可以维护随着时间推移已经产生的数据聚合或者,并且Filnk的检查点机制在一次失败的事件中一个应用状态的强一致性。

Flink使用了事件“发生”的时间来支持流式计算和带有事件时间语义的视窗,而不是其他一些系统使用的“处理时间”,这就可以保证事件在传输中发生的延迟和乱序问题不会带来计算的错误。

除了提供数据驱动的windows视窗外,Flink还支持基于时间,计数,session等的灵活windows视窗。视窗能够用灵活的触发条件定制化从而达到对复杂的流传输模式的支持。Flink的视窗使得模拟真实的创建数据的环境成为可能。

Flink的容错能力是轻量级的,允许系统保持高并发,同时在相同时间内提供强一致性保证。Flink以零数据丢失的方式从故障中恢复,但没有考虑可靠性和延迟之间的折衷。

未完待续