Flink编程模型是怎样的

发布时间:2021-12-31 15:37:53 作者:iii
来源:亿速云 阅读:184

这篇文章主要讲解了“Flink编程模型是怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flink编程模型是怎样的”吧!

抽象层次(Levels of Abstraction)


Flink编程模型是怎样的
Flink 提供几种不同层次的抽象来开发 流/批(streaming/batch)进程

进程和数据流(Programs and Dataflows)

Flink进程的基本构建块是流(streams)和转换(transformations)。 (请注意,Flink的DataSet API中使用的DataSet也是内部流,稍后会详细介绍。)从概念上讲,是(可能永无止境的)数据记录流,而转换是将一个或多个流作为输入,并产生一个或多个输出流的操作。

执行时,Flink进程映射到流数据流(streaming dataflows),由流(streams)和转换运算符(operators)组成。 每个数据流都以一个或多个源(sources)开头,并以一个或多个接收器(sinks)结束。 数据流类似于任意有向无环图(DAGs, Directed acyclic graphs)。 尽管通过迭代结构允许特殊形式的循环,但为了简单起见,我们将在大多数情况下对其进行掩饰简化。

Flink编程模型是怎样的

通常,进程中的转换与数据流中的运算符之间存在一对一的对应关系。 但是,有时一个转换可能包含多个转换运算符。

源(soruces)和接收器(sinks)被记录在 流连接器和 批处理连接器文档中。 转换(transformation)被记录在 DataStream运算符和 DataSet转换中。

并行数据流

Flink中的进程本质上是并行(parallel)和分布式的(distributed)。 在执行期间,具有一个或多个流分区(stream partitions),并且每个运算符具有一个或多个运算子任务(operator subtasks)。 运算子任务彼此独立,并且可以在不同的线程中执行,也可能是在不同的机器或容器上执行。

运算子任务的数量就是某个特定运算符的并行度(parallelism)。 流的并行度始终是其生成的运算符的并行度。 同一进程的不同运算符可能具有不同的并行级别。

Flink编程模型是怎样的

流可以以一对一(或转发)的模式或以重新分发的模式在两个运算符之间传输数据:

有关配置和控制并行性的详细信息,请参阅 并行执行的文档。

窗口(Windows)

聚合事件(如,counts,sums)在流上的工作方式与批处理方式不同。 例如,不可能计算流中的所有元素,因为流通常是无限的(无界)。 相反,流上的聚合(counts,sums等)由窗口(windows)限定,例如“在最后5分钟内计数”或“最后100个元素的总和”。

Windows可以是时间驱动的(例如:每30秒)或数据驱动(例如:每100个元素)。 人们通常区分不同类型的窗口,例如翻滚窗口(tumbling windows)(没有重叠),滑动窗口(sliding windows)(具有重叠)和会话窗口(session windows)(由不活动间隙打断)。

Flink编程模型是怎样的

时间(Time)

当在流进程中引用时间(例如定义窗口)时,可以参考不同的时间概念:

Flink编程模型是怎样的

事件时间,接收时间和处理时间

状态运算(Stateful Operations)

虽然数据流中的许多运算只是一次查看一个单独的事件(例如事件解析器),但某些运算会记住多个事件(例如窗口运算符)的信息。这些操作称为stateful。

状态运算的状态可以被认为是由内嵌的键/值存储来维护。状态和状态运算符读取的流被严格地分区和分发。因此,只有在keyBy()函数之后才能在keyed stream上访问键/值状态,并且限制为与当前事件的键相关联的值。对齐流和状态的键可确保所有状态更新都是本地操作,从而保证一致性而无需事务开销。对齐操作还允许Flink重新分配状态并透明地调整流分区。

Flink编程模型是怎样的

状态和分区

容错检查点(Checkpoints for Fault Tolerance)

Flink使用stream replay和检查点(checkpointng)的组合来实现容错。检查点与每个输入流中的特定点以及每个运算符的对应状态相关。通过恢复运算符的状态并从检查点重新执行(replay)事件,可以从检查点恢复流数据流并保持一致性(exactly-once processing semantics)。

检查点间隔是执行期间的容错和恢复时间(需要重放的事件的数量)之间的折衷方法。

容错的内部机制中的描述提供了有关Flink如何管理检查点和相关主题的更多信息。有关启用和配置检查点的详细信息,请参阅 检查点API文档。

批处理流

Flink执行 批处理进程作为流进程的一种特殊情况,即流是有界的(有限数量的元素)。 DataSet在内部被视为数据流。因此,上述概念以相同的方式应用于批处理进程,并且它们适用于流进程,除了少数例外:

感谢各位的阅读,以上就是“Flink编程模型是怎样的”的内容了,经过本文的学习后,相信大家对Flink编程模型是怎样的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. Django模型的_meta编程
  2. 基于Flink 1.11.0是怎样实现Flink的Watermark机制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flink

上一篇:如何让mac电脑更省电

下一篇:如何进行ACS验证和MAC地址绑定

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》