flink 原理解析:讲解
本质:相当于一个消息队列
作用:1.多数据源数据整理,统计,进行一些操作,写入新的数据源
2.监听数据库binlog,进行数据实时处理
结构:
具体流程:
1.通过消息队列例如(kafka、mysql cdc)等进行监听,收集多通道的数据
2.flink 通过消费者消费消息队列里的数据进到flink中
3.在flink里面进行一些数据的操作(清洗、Join、操作)
4.通过生产者生产操作好的数据
5.消息队列接收flink所生产的数据,进行修改数据库
flink内部是什么样的:
flink名词解释:
Flink Program:(flink客户端)用于接收数据
JobManager:用于管理任务去向节点,并进行数据快照存储持久化
1.Actor System:用于接收数据并且
2.scheduler:(调度器)用于调度各个任务
3.Checkpoint coordinator:
检查节点状态,并且保存流数据快照。 例如发现近4小时数据处理有问题,可以通过checkpoint进行恢复。可以设置多个checkpoint设置多个多个。在Flink的配置文件conf/flink-conf.yaml中,添加如下配置,指定最多需要保存Checkpoint的个数:
state.checkpoints.num-retained: 2
TaskManager:任务处理管理器(内含java虚拟机)
1.TaskSlot:算子。用来处理相应的任务。有消费者,生产者。处理者。可以通过设置parallel进行设置算子数量。
2.flink创建的表都存在这个里面
flink集群:
flink节点处理流程:
1.flink客户端会接收Dataflow的数据,并且会进行转发,之后提交一个任务给jobmanager
2.jobmanager接收任务与数据,会分配相应空闲的taskmanager节点进行处理此次任务
3.taskmanager接收到任务会分配taskslot算子进行处理此次任务。
flink流式处理:真正意义上做到针对每条数据进行处理,所有的数据进来都是一条流
flink 可以设置parallel :
这是用来flink里面进设置算子,有几个消费者,有几个生产者,有几个处理对象
flink 表的存储:
flink的表是存储在jvm中的,所以每次重启都会清空。
flink内存资源不够:
flink 内部预设了一个Memory Reseved的资源空间,如果内存资源不够,他会先去Memory Reseved中进行资源调用处理。当两个内存都满了,新来的任务就会卡死在哪那里。任务一直处于创建状态。
flink 可以设置窗口:
滚动窗口:按照设置的区间进行滚动,每次滚动不会有时间重复
滑动窗口:需要设置窗口大小,滑动距离,如果滑动距离小于窗口大小,就会产生重复数据。如果滑动距离等于窗口大小,则就是滚动窗口
会话窗口:不设置窗口大小,所有的数据都不存在时间维度上的限制
flink sql相关的sql:概述 - 实时计算Flink版 - 阿里云
时态表(版本表):可以通过时间管理版本
flink sql 双流join,时态表(版本表) 介绍及使用:【Flink 1.12】基于 FLINK SQL 的实时数据打宽_哔哩哔哩_bilibili
flink sql :
滑动窗口,滚动窗口,会话窗口(无界窗口):https://zhuanlan.zhihu.com/p/183234177



