Flink怎么使用

发布时间:2021-12-18 15:37:59 作者:iii
来源:亿速云 阅读:170

本篇内容介绍了“Flink怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Flink是什么?

Flink是一个框架,是一个用于有限(bounded)或者无限(unbounded)数据流上进行有状态计算的分布式处理引擎。

处理框架

Flink怎么使用

Flink怎么使用

Flink的软件栈如图一所示,其核心是distributed dataflow engine用于执行数据流处理程序。Flink运行时程序是一个通过有状态的算子连接的数据流的有向无环图(DAG),对上提供有限数据流的DataSet API和无限数据流的DataStream API。

如图二所示,Flink集群包含三类角色,client、JobManager和TaskManager。client将数据处理程序转换为DAG图并提交到JobManager。JobManager协调程序的执行,并跟踪每一个算子的状态以实现故障恢复。TaskManager从JobManager处接收需要部署的Task,负责具体数据处理程序的执行,一个TaskManager执行一个或者多个算子处理数据流,并将状态上报至JobManager。

这里的算子就是一个独立数据处理程序,常用的有map、flatmap、keyBY、sum、apply、reduce、window等。其中,map和flatMap的区别是map是一对一的映射,既一个输入对应一个输出。faltMap是一对多映射,一个输入对应0个或者多个输出。

通过上述论述,Flink程序的实质就是用多个算子组合在一起形成一个有向无环图,理解了这一点flink的程序就不难理解了。下面有个简单的例子:

简单示例

Flink怎么使用

Time

在Flink中定义了三种时间概念,分别是Event Time,Ingestion Time和Processing Time。

Processing Time顾名思义就是处理收到事件的系统时间,由于它不需要要数据流和处理机器间的时间协调,所以具备最低的延迟。但是,在分布式和异步的环境下,Processing Time不能提供确定性,因为它容易受到事件到达Flink系统的速度、事件在Flink系统内操作流动的速度以及中断的影响。

Event Time是事件发生时间,一般指的是数据本身携带的时间戳。Event Time 程序必须指定如何生成 Event Time 水印,这是表示 Event Time 进度的机制。理想的情况是,无论事件什么时候到达或者其怎么排序,最后处理Event Time将产生完全一致和确定的结果。但是,实际上除非事件按照已知顺序(按照事件的时间)到达,否则处理 Event Time 时将会因为要等待一些无序事件而产生延迟。由于Flink程序只能等待一段有限的时间,因此就难以保证处理Event Time将产生完全一致和确定的结果。

Ingestion Time是事件进入flink系统的时间。Ingestion Time 程序无法处理任何无序事件或延迟数据,但程序不必指定如何生成水印。在 Flink 中,Ingestion Time 与 Event Time 非常相似,但 Ingestion Time 具有自动分配时间戳和自动生成水印功能。

三个时间之间的关系通过一张图可以形象的显示出来:

Flink怎么使用

“Flink怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. flink sql cdc怎么使用
  2. Flink中CoProcessFunction如何使用

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

flink

上一篇:BlueStore事物状态机是什么

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

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

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