Flink编程模型知识梳理脑图

最近在重新整理学习flink官网内容,并在学习过程中将内容总结成脑图,是叶子自己最近一点一点整理绘制哒,转载请贴此文链接谢谢啦~图片以svg形式插入文章,可拖动显示完整,后续如有更改会持续更新。

此脑图绘制依据官网链接:Dataflow Programming Model

1、flink 编程模型programsource(一个或多个)stream(数据、中间结果)transformationssink(一个或多个)dataflowssource operator(一个或多个)streamstransformation operatorsink operator(一个或多个)parallel dataflows并行数据流stream-被分割成多个stream partitionoperator-被分割成多个operator subtask(独立的、可在不同线程\主机\容器内运行)关系描述operator subtask数量=operator并行度(parallelism)stream并行度=生成它的operator的并行度stream在operator之间的传输one-to-one streams(forwarding)保持分区特性以及分区元素的有序性Redistributing streams(distribution)分区会改变-改变了此算子输入流的分区;每个上游的subtask向下游多个不同的subtasks发送数据(例如keyBy() , broadcast(), or rebalance() )。数据元之间的排序仅保存在每对发送和接收subtask中program-dataflows-parallel dataflows关系描述运行的program映射成Streaming Dataflowsprogram里的transformation和dataflows里的transofrmation operator映射关系一般1:1,也可能1:nFlink中的程序本质上是并行和分布式的,执行期间dataflows应为parallel dataflowswindow窗口驱动类型时间驱动(30s)数据驱动(100个数据元)窗口类型tumbling(无重叠)sliding windows(有重叠)session windows(有空隙的活动)time时间event time-创建时间Ingestion time-进入时间-event(事件、数据)从source operator进入到flink dataflow的时间processing time-处理时间-对event处理的本地系统时间(在taskmanager上)Stateful Operations(有状态的数据处理)是关系多个事件的信息并进行处理的operationstate使用内嵌的key/value存储器维护与stream一起partitioned和distributed  使用stateful operators访问这些key/value的状态信息仅在keyed streams(通过keyBy() 函数处理过)中才能访问到,并且只能根据当前事件的key来访问其值数据流按照key排列能保证所有的状态更新都是本地操作,保证一致性且无事务问题同时这种排列方式使Flink能够透明的再分发状态信息和调整数据流分区容错性 stream replay(流重放) checkpoint(设置检查点)一个checkpoint关联了输入流中的某个特定记录和每个算子的对应状态实现数据流可以从checkpoint中进行恢复,通过恢复Operators的状态以及从该checkpoint重放事件,其保证一致性exactly-once 的处理语义Checkpoint的间隔关系到执行时的容错性和恢复时间,也决定了需要被重放的事件数Batch on StreamingFlink把批处理作为特殊的流处理程序来执行,将其看作有界的流(有限数量的元素);DataSet在内部被当作一个流数据概念几乎通用但有例外容错机制不同因为inputs是有界的,所以不使用checkpoints,恢复机制是通过完整的流重放来实现有状态的Operations数据结构不同DataSet API的有状态操作API使用简单的内存和堆外内存(in-memory/out-of-core)的数据结构,而不是key/value的索引独特的同步的迭代操作 special synchronized (superstep-based) iterations,仅应用于有界数据流

至此,本篇内容完成。

如有问题,请发送邮件至leafming@foxmail.com联系我,谢谢~
0%