本篇内容介绍了“Flink怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联服务项目包括东港网站建设、东港网站制作、东港网页制作以及东港网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,东港网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到东港省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Flink是什么?
Flink是一个框架,是一个用于有限(bounded)或者无限(unbounded)数据流上进行有状态计算的分布式处理引擎。
处理框架
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的程序就不难理解了。下面有个简单的例子:
简单示例
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怎么使用
转载来于:http://scgulin.cn/article/jpdidd.html