千家信息网

Flink面试题有哪些

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"Flink面试题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flink面试题有哪些"吧!1、应用架构问题:公司怎么提交的实
千家信息网最后更新 2026年11月04日Flink面试题有哪些

这篇文章主要讲解了"Flink面试题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flink面试题有哪些"吧!

1、应用架构

问题:公司怎么提交的实时任务,有多少 Job Manager?

解答:

1. 我们使用 yarn session 模式提交任务。每次提交都会创建一个新的 Flink 集群,为每一个 job 提供一个 yarn-session,任务之间互相独立,互不影响, 方便管理。任务执行完成之后创建的集群也会消失。线上命令脚本如下:

bin/yarn-session.sh -n 7 -s 8 -jm 3072 -tm 32768 -qu root.*.* -nm *-* -d

其中申请 7 个 taskManager,每个 8 核,每个 taskmanager 有 32768M 内存。

2. 集群默认只有一个 Job Manager。但为了防止单点故障,我们配置了高可用。 我们公司一般配置一个主 Job Manager,两个备用 Job Manager,然后结合 ZooKeeper 的使用,来达到高可用。

2、压测和监控

问题:怎么做压力测试和监控?

解答:我们一般碰到的压力来自以下几个方面:

一,产生数据流的速度如果过快,而下游的算子消费不过来的话,会产生背压。 背压的监控可以使用 Flink Web UI(localhost:8081) 来可视化监控,一旦报警就能知道。一般情况下背压问题的产生可能是由于 sink 这个 操作符没有优化好,做一下 优化就可以了。比如如果是写入 ElasticSearch, 那么可以改成批量写入,可以调 大 ElasticSearch 队列的大小等等策略。

二,设置 watermark 的最大延迟时间这个参数,如果设置的过大,可能会造成内存的压力。可以设置最大延迟时间小一些,然后把迟到元素发送到侧输出流中去。 晚一点更新结果。或者使用类似于 RocksDB 这样的状态后端, RocksDB 会开辟堆外存储空间,但 IO 速度会变慢,需要权衡。

三,还有就是滑动窗口的长度如果过长,而滑动距离很短的话,Flink 的性能会下降的很厉害。我们主要通过时间分片的方法,将每个元素只存入一个"重叠窗 口",这样就可以减少窗口处理中状态的写入。(详情链接:Flink 滑动窗口优化)

四,状态后端使用 RocksDB,还没有碰到被撑爆的问题

3、为什么用 Flink

问题:为什么使用 Flink 替代 Spark?

解答:主要考虑的是 flink 的低延迟、高吞吐量和对流式数据应用场景更好的支持;另外,flink 可以很好地处理乱序数据,而且可以保证 exactly-once 的状态一致性。

4、checkpoint 的理解

问题:如何理解Flink的checkpoint

解答:Checkpoint是Flink实现容错机制最核心的功能,它能够根据配置周期性地基于Stream中各个Operator/task的状态来生成快照,从而将这些状态数据定期持久化存储下来,当Flink程序一旦意外崩溃时,重新运行程序时可以有选择地从这些快照进行恢复,从而修正因为故障带来的程序数据异常。他可以存在内存,文件系统,或者 RocksDB。

5、exactly-once 的保证

问题:如果下级存储不支持事务,Flink 怎么保证 exactly-once?

解答:端到端的 exactly-once 对 sink 要求比较高,具体实现主要有幂等写入和 事务性写入两种方式。幂等写入的场景依赖于业务逻辑,更常见的是用事务性写入。 而事务性写入又有预写日志(WAL)和两阶段提交(2PC)两种方式。

如果外部系统不支持事务,那么可以用预写日志的方式,把结果数据先当成状态保存,然后在收到 checkpoint 完成的通知时,一次性写入 sink 系统。

6、状态机制

问题:说一下 Flink 状态机制?

解答:Flink 内置的很多算子,包括源 source,数据存储 sink 都是有状态的。在 Flink 中,状态始终与特定算子相关联。Flink 会以 checkpoint 的形式对各个任务的 状态进行快照,用于保证故障恢复时的状态一致性。Flink 通过状态后端来管理状态 和 checkpoint 的存储,状态后端也可以有不同的配置选择。

7、海量 key 去重

问题:怎么去重?考虑一个实时场景:双十一场景,滑动窗口长度为 1 小时, 滑动距离为 10 秒钟,亿级用户,怎样计算 UV?

解答:使用类似于 scala 的 set 数据结构或者 redis 的 set 显然是不行的, 因为可能有上亿个 Key,内存放不下。所以可以考虑使用布隆过滤器(Bloom Filter) 来去重。

8、checkpoint 与 spark 比较

问题:Flink 的 checkpoint 机制对比 spark 有什么不同和优势?

解答: spark streaming 的 checkpoint 仅仅是针对 driver 的故障恢复做了数据和元数据的checkpoint。而 flink 的 checkpoint 机制要复杂了很多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。

9、watermark 机制

问题:请详细解释一下 Flink 的 Watermark 机制。

解答:在使用 EventTime 处理 Stream 数据的时候会遇到数据乱序的问题,流处理从 Event(事 件)产生,流经 Source,再到 Operator,这中间需要一定的时间。虽然大部分情况下,传输到 Operator 的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络延迟等原因而导致乱序的产生,特别是使用 Kafka 的时候,多个分区之间的数据无法保证有序。因此, 在进行 Window 计算的时候,不能无限期地等下去,必须要有个机制来保证在特定的时间后, 必须触发 Window 进行计算,这个特别的机制就是 Watermark(水位线)。Watermark是用于处理乱序事件的。

在 Flink 的窗口处理过程中,如果确定全部数据到达,就可以对 Window 的所有数据做窗口计算操作(如汇总、分组等),如果数据没有全部到达,则继续等待该窗口中的数据全部到达才开始处理。这种情况下就需要用到水位线(WaterMarks)机制,它能够衡量数据处理进度(表达数据到达的完整性),保证事件数据(全部)到达 Flink 系统,或者在乱序及延迟到达时,也能够像预期一样计算出正确并且连续的结果。

10、exactly-once 如何实现

问题:Flink 中 exactly-once 语义是如何实现的,状态是如何存储的?

解答:Flink 依靠 checkpoint 机制来实现 exactly-once 语义,如果要实现端到端 的 exactly-once,还需要外部 source 和 sink 满足一定的条件。状态的存储通过状态 后端来管理,Flink 中可以配置不同的状态后端。

11、CEP

问题:Flink CEP 编程中当状态没有到达的时候会将数据保存在哪里?

解答:在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是 watermark的处理逻辑。CEP对未匹配成功的事件序 列的处理,和迟到数据是类似的。在 Flink CEP 的处理逻辑中,状态没有满足的和迟到的数据,都会存储在一个 Map 数据结构中,也就是说,如果我们限定判断事件 序列的时长为5 分钟,那么内存中就会存储 5 分钟的数据,这在我看来,也是对内存的极大损伤之一。

12、三种时间语义

问题:Flink 三种时间语义是什么,分别说出应用场景?

解答:

  • Event Time:这是实际应用最常见的时间语义,指的是事件创建的时间,往往跟watermark结合使用

  • Processing Time:指每一个执行基于时间操作的算子的本地系统时间,与机器相关。适用场景:没有事件时间的情况下,或者对实时性要求超高的情况

  • Ingestion Time:指数据进入Flink的时间。适用场景:存在多个 Source Operator 的情况下,每个 Source Operator 可以使用自己本地系统时钟指派 Ingestion Time。后续基于时间相关的各种操作, 都会使用数据记录中的 Ingestion Time

13、数据高峰的处理

问题:Flink 程序在面对数据高峰期时如何处理?

解答:使用大容量的 Kafka 把数据先放到消息队列里面作为数据源,再使用 Flink 进行消费,不过这样会影响到一点实时性。

感谢各位的阅读,以上就是"Flink面试题有哪些"的内容了,经过本文的学习后,相信大家对Flink面试题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 状态 问题 时间 解答 机制 处理 存储 事件 场景 情况 保证 快照 系统 事务 任务 内存 算子 语义 延迟 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 今日互联网科技 互联网 科技 合肥互联网科技公司 致骋互联网科技 互联网科技上市公司 互联网科技公司的市场部门 互联网科技寓意 宁夏众和广鑫互联网科技有限公司 互联网和黑科技的看法 互联网软件和科技 昊天互联网科技有限公司 语蝶互联网科技有限公司 恒生互联网科技指数跳水 互联网科技创新的路径 互联网科技公司营业执照怎么办理 每天都有哪些好的互联网科技 郑州欣桑互联网科技有限公司 湖北辰鑫科技互联网 互联网金融运营模式中的金融科技 科技互联网公司装修 迪茉互联网科技 天扬科技互联网广告 金融科技和互联网金融 济南华为互联网科技产业总部基地 雨阳互联网卡科技有限公司 上海创道互联网络科技有限公司 广州智享互联网科技 中国互联网公司的科技投入 北京品多多互联网科技有限公司
0