首页 > 技术文章 > 【回顾】二、Flink基本知识点

fi0108 2021-11-02 20:04 原文

一、Flink与spark的区别

1、Flink是基于事件驱动的,spark是微批处理

2、Flink支持多种时间语义,spark只支持处理时间语义

3、架构不同,容错不同

二、Flink集群角色

client:提交程序的客户端,与jobManage连接,提交job

jobManage:集群协调者,收集flink-job信息,检查点,故障恢复

taskManage:负责计算执行的work,管理本地资源

三、并行度

算子并行度

执行环境并行度

一般设置为kafka的分区数

四、分区、分组

分区是算子并行实例,物理成面

分组是key进行区分,是逻辑成面

五、interval join 

是基于keyed+connect,不会处理join不上的数据,需要处理的话使用 cogroup+connect

六、Flink三种时间语义

事件时间:事件 创建的时间

注入时间:进入flink的时间

处理时间:算子执行的本地系统时间

七、Flink中workmark机制

带有时间戳的特殊数据,插入到流里面,单调不减,用于处理乱序事件

生成方式,间歇性,周期性,一般周期性,减少系统压力,最大事件时间-乱序事件-1ms

八、窗口

按时间分:滚动、滑动、会话

按数量分:滚动、滑动

九、准确一致性的保证

分为三个层面,source,flink内部,sink

source,sink与kafka相关,source可重发,flink维护offset,作为状态存储,sink主要是迷瞪写入或者事物性写入

flink内部checkpoint机制

十、分布式快照原理

容错机制,分布式数据流和操作算子状态的一致性快照来保证。在数据流源把barries注入到并行数据流里面,快照n的barries被插入的位置是所有数据最大的位置,是分区中最后一条记录的偏移量,将该位置报告给checkpoint,barries向下流动,到某个中间算子,从其所有输入流中收到n的barries,为n发出进入算子的所有输出流中,一旦sink算子,接受到所有输入流的barries n,它就向checkpoint确认快照n完成。快照完成之后,job就不会向数据源请求n之前的数据。

十一、cep

一个或者多个简单事件构成的事件流,通过一定的匹配规则,输出用户想得到的数据。对于没有到达的数据,会存储到map的内存中

十二、提交任务,组件通信,任务调度,内存模型

另开一章

十三、优化、背压,数据倾斜

 

推荐阅读