flink基础教程读书笔记

flink基础教程读书笔记,第1张

flink基础教程读书笔记

数据架构设计领域发生了重大的变化,基于流的处理是变化的核心。


分布式文件系统用来存储不经常更新的数据,他们也是大规模批量计算所以来的数据存储方式。


批处理架构(lambda架构)实现计数的方式:持续摄取数据的管道(flume)每小时创建一个文件,由调度程序安排批处理作业分析最近生成的文件,然后输出计数结果。


该架构缺点:1.组件多,设计管道、调度、作业程序,学习成本、管理成本大 2.修改分析时间周期不方便,涉及工作流调度逻辑 3.实现计数预警功能需要引入流处理系统,流处理做近似计算,批处理做准确计数。


4.事件可能是乱序的,上一批事件可能混入当前批次。


5.事件窗口是短板,不灵活。


例如不能满足登录登出计数的需求。


flink可以同时满足计数和预警的功能,flink速度减慢只会导致数据在传输系统如kafka中堆积。


flink以时间为单位把事件流分割为一个个任务(称为窗口)。


由固定时间分组改为根据事件产生的时间分组,只需要在flink中修改时间窗口的定义即可。


如果flink的代码有改动,只需要重播kafka主题。


和lambda架构相比,flink不需要以时间为单位生成额外的文件,同时时间的定义被代码明确定义。


而不是摄取,调度,计算扯不清。


时间的概念:事件时间(时间发生的时候),处理时间(事件被处理的时间),摄入时间(进入流处理系统的时间)。


很多情况下事件时间和处理时间是不一致的,即事件以乱序的方式进入系统。


有些需求要求尽快处理得到结果,即使有小的误差也无所谓,这种场景适合采用处理时间。


有些需求要求只是统计特定时间发生的事件,这种场景适合采用事件时间。


flink支持的窗口:

时间窗口:flink支持2种时间窗口:滚动时间窗口(没周期),滑动时间窗口(每周期,滑动步长值)

计数窗口:分组依据不再是时间窗口,而是根据元素的数量。


同时也支持滚动和滑动2种方式。


计数窗口需要谨慎使用,场景如下:假设事件窗口大小是100,达到90后事件停止,则窗口永远不能关闭,该窗口占用的内存也浪费了。


一种解决方式是通过超时触发。


会话窗口:会话窗口是指活动阶段,其前后都有非活动阶段。


在flink种,会话窗口由超时时间决定,即希望多久认为会话已经结束。


触发器:触发器控制生成结果的时间,即核实聚合窗口内容并返回给用户。


(收到水印触发,自定义触发*1秒1次*)

编程模型:

maven:mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.6.0 -DgroupId=com.test -DartifactId=flink -Dversion=1.0.0 -Dpackage=com.test -DinteractiveMode=false

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/588554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存