Apache Flink 官方文档--概念

发布时间:2020-07-27 12:05:46 作者:Lynn_Yuan
来源:网络 阅读:1234

数据流编程模型

原文链接
博主理解篇

抽象层次

  Flink提供不同级别的抽象来开发流/批处理应用程序。

Apache Flink 官方文档--概念

  低阶的处理函数集成了DataStream API,这样就可以针对特性的操作使用低层级的抽象。DataSet API 为有边界的 data sets提供了附加的原语,例如循环/迭代。

时间(Time)

  当提到流程序(例如定义窗口)中的时间时,你可以参考不同的时间概念:

有状态的操作

  尽管数据流中的很多操作一次只查看一个独立的事件(比如事件解析器),有些操作却会记录多个事件间的信息(比如窗口算子)。 这些操作被称为有状态的
  有状态操作的状态保存在一个可被视作嵌入式键/值存储的部分中。状态由有状态operator读取的流一起被严格地分区与分布。因此,只能访问一个 keyBy() 函数之后的 keyed streams 的键/值状态,并且仅限于与当前事件键相关联的值。调整流和状态的键确保了所有状态更新都是本地操作,以在没有事务开销的情况下确保一致性。这种对齐还使得Flink可以透明地重新分配状态与调整流的分区。
Apache Flink 官方文档--概念
查看更多信息,请查看此文档有关state的内容。

容错检查点

  Flink使用流重放检查点的结合实现了容错。检查点与每个输入流的特定点及与相关的每一个operator的状态相关。一个数据流可以从一个检查点恢复出来,其中通过恢复operator状态并从检查点重放事件以保持一致性 (一次处理语义)
  检查点间隔是以恢复时间(需要重放的事件数量)来消除执行过程中容错的开销的一种手段。
  容错内部的描述提供了更多关于flink管理检查点和相关的话题。启用和配置检查点的详细信息请查看这个文档checkpointing API docs。

流式批处理

  Flink将批处理程序作为流处理程序的特殊情况来执行,只是流是有界的(有限个元素)。 DataSet 内部被视为数据流。上述适用于流处理程序的概念同样适用于批处理程序,除了一些例外:

分布式运行时

原文链接

任务和Operator链

  对于分布式运行,Flink将operator子任务链接在一起放入任务池。每个任务由一个线程执行。将operator链接到任务池中是一项有用的优化:它减少线程到线程的切换和缓冲的开销,并在降低延迟的同时提高整体吞吐量。可以配置链接行为,有关详细信息,请查阅链接文档。
  下图中的示例数据流由五个子任务执行,因此有五个并行线程。
Apache Flink 官方文档--概念

作业管理器,任务管理器,客户端

  Flink运行时有两种类型的进程组成:

状态后端(State Backends)

  存储键/值对索引的确切数据结构取决于所选的状态后端。一个状态后端将数据存储在内存中的哈希映射中,另一个状态后端使用[RocksDB]()作为键/值对存储。除了定义保存状态的数据结构之外,状态后端还实现逻辑以获取键/值对状态的时间点快照,并将该快照存储为检查点的一部分。
Apache Flink 官方文档--概念

保存点Savepoints

  用Data Stream API编写的程序可以从保存点恢复执行。保存点允许更新程序和Flink集群,而不会丢失任何状态。
  保存点是手动触发的检查点,它会获取程序的快照并将其写入状态后端。他们依靠常规的检查点机制。在执行期间,程序会定期在工作节点上创建快照并生成检查点。对于恢复,仅仅需要最后完成的检查点,因此一旦新的检查点完成,就可以安全地丢弃旧的检查点。
  保存点与这些定期检查点类似,不同之处在于它们由用户触发,并且在较新的检查点完成时不会自动过期。可以从命令行或通过REST API取消作业时创建保存点。

推荐阅读:
  1. 1.2 Introduction to Apache Flink(Flink介绍)
  2. 回顾 | Apache Flink X Apache RocketMQ · 上海站(PPT下载)

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

flink 编程模型 分布式运行时

上一篇:TOMCAT配置SSL双向单向握手

下一篇:获取Linux系统中目录文件大小的方法

相关阅读

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

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