文章目录
- 1.Flink 的并行度了解吗?Flink 的并行度设置是怎样的?
- 2.Flink 的 Slot 和 parallelism 有什么区别
- 3.link 有没有重启策略?说说有哪几种?
- 4.用过 Flink 中的分布式缓存吗?如何使用?
- 5.说说 Flink 中的广播变量,使用时需要注意什么
- 6.Flink 中的窗口
- 7.说说 Flink 中的状态存储
- 8.Flink 中的时间
- 9.watermark
1.Flink 的并行度了解吗?Flink 的并行度设置是怎样的?
Flink 中的任务被分为多个并行任务来执行,其中每个并行的实例处理一部分数据。这些并行实例的数量被称为并行度。我们在实际生产环境中可以从四个不同层面设置并行度:
操作算子层面(Operator Level)
执行环境层面(Execution Environment Level)
客户端层面(Client Level)
系统层面(System Level)
需要注意的优先级:算子层面>环境层面>客户端层面>系统层面。
2.Flink 的 Slot 和 parallelism 有什么区别
slot 是指 taskmanager 的并发执行能力,假设我们将 taskmanager.numberOfTaskSlots 配置为 3 那么每一个 taskmanager 中分配 3 个 TaskSlot, 3 个 taskmanager 一共有 9 个TaskSlot。
parallelism 是指 taskmanager 实际使用的并发能力。假设我们把 parallelism.default 设置为 1,那么 9 个 TaskSlot 只能用 1 个,有 8 个空闲。
3.link 有没有重启策略?说说有哪几种?
固定延迟重启策略(Fixed Delay Restart Strategy)
故障率重启策略(Failure Rate Restart Strategy)
没有重启策略(No Restart Strategy)
Fallback 重启策略(Fallback Restart Strategy
4.用过 Flink 中的分布式缓存吗?如何使用?
Flink 实现的分布式缓存和 Hadoop 有异曲同工之妙。目的是在本地读取文件,并把他放在 taskmanager 节点中,防止 task 重复拉取。
5.说说 Flink 中的广播变量,使用时需要注意什么
我们知道 Flink 是并行的,计算过程可能不在一个 Slot 中进行,那么有一种情况即:
当我们需要访问同一份数据。那么 Flink 中的广播变量就是为了解决这种情况。我们可以把广播变量理解为是一个公共的共享变量,我们可以把一个 dataset 数据集广播出去,然后不同的 task 在节点上都能够获取到,这个数据在每个节点上只会存在一份。
6.Flink 中的窗口
Flink 支持两种划分窗口的方式,按照 time 和 count。
flink 支持窗口的两个重要属性(size 和 interval)如果 size=interval,那么就会形成 tumbling-window(无重叠数据) 如果 size>interval,那么就会形成 sliding-window(有重叠数据) 如果 size< interval, 那么这种窗口将会丢失数据。比如每 5 秒钟,统计过去 3 秒的通过路口汽车的数据,将会漏掉 2 秒钟的数据。通过组合可以得出四种基本窗口:
time-tumbling-window 无 重 叠 数 据 的 时 间 窗 口 , 设 置 方 式 举 例 :
timeWindow(Time.seconds(5))
time-sliding-window 有 重 叠 数 据 的 时 间 窗 口 , 设 置 方 式 举 例 :
timeWindow(Time.seconds(5), Time.seconds(3))
count-tumbling-window 无重叠数据的数量窗口,设置方式举例:countWindow(5)
count-sliding-window 有重叠数据的数量窗口,设置方式举例:countWindow(5,3)
1.时间窗口
滚动,滑动,会话
2.计数窗口
滑动,滚动
7.说说 Flink 中的状态存储
Flink 提供了三种状态存储方式:MemoryStateBackend、FsStateBackend、RocksDBStateBackend。择的状态存储策略不同,会影响状态持久化如何和 checkpoint 交互。
8.Flink 中的时间
时间语义:
事件时间,摄入时间,处理时间
Event Time, Ingestion Time, Processing Time
时间语义更关心事件创建时间Event Time可以从日志数据的时间戳中获取
9.watermark
水印
是一种衡量EventTime进展的机制,可以设置延迟触发。用来解决乱序情况,和window一起使用。
本质是一个时间戳,用来和window一起处理乱序事件的。