首页 > 其他分享 >Flink常见面试题总结

Flink常见面试题总结

时间:2022-09-01 17:35:06浏览次数:87  
标签:总结 状态 面试题 exactly Flink checkpoint 解答

 

1、面试题一:应用架构

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

解答

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

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

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

(2)集群默认只有一个 Job Manager。但为了防止单点故障,我们配置了高可用。对于 standlone 模式,我们公司一般配置一个主 Job Manager,两个备用 Job Manager,然后结合 ZooKeeper 的使用,来达到高可用;对于 yarn 模式,yarn 在Job Mananger 故障会自动进行重启,所以只需要一个,我们配置的最大重启次数是10 次。

2、面试题二:压测和监控

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

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

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

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

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

详细内容请看链接:https://www.infoq.cn/article/sIhs_qY6HCpMQNblTI9M

(4)状态后端使用 RocksDB,还没有碰到被撑爆的问题。

3、面试题三:为什么用 Flink

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

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

4、面试题四:checkpoint 的存储

问题:Flink 的 checkpoint 存在哪里?

解答:可以是内存,文件系统,或者 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 机制 要复杂了很多,它采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。

详细参考文章链接:
https://cloud.tencent.com/developer/article/1189624

9、面试题九:watermark 机制

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

解答:Watermark 本质是 Flink 中衡量 EventTime 进展的一个机制,主要用来处理乱序数据。

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 三种时间语义是什么,分别说出应用场景?

解答
(1)Event Time:这是实际应用最常见的时间语义。
(2)Processing Time:没有事件时间的情况下,或者对实时性要求超高的情况下。
(3)Ingestion Time:存在多个 Source Operator 的情况下,每个 Source Operator可以使用自己本地系统时钟指派 Ingestion Time。后续基于时间相关的各种操作,都会使用数据记录中的 Ingestion Time。

13、面试题十三:数据高峰的处理

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

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

 

标签:总结,状态,面试题,exactly,Flink,checkpoint,解答
From: https://www.cnblogs.com/huanghanyu/p/16647262.html

相关文章

  • 面试题之RocketMQ
    1、为什么要使用MQ?因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了MQ,MQ具有异步解耦和削峰填谷的作用2、RocketMQ由哪些角......
  • 认证流程总结
    1.用户的新增密码的加密存储:一般使用不可逆加密mango使用的是BCrypt(是一种加盐的不可逆加密方法)@Overridepublicvoidadd(Adminadmin){Stringpassword=BCrypt......
  • 助教工作总结(计算机操作系统)
    一、助教工作的具体职责和任务批改同学们每一次的课堂作业并且登记成绩,及时对同学们作业中出现的主要问题进行总结并反馈给任课老师,协助老师更好地推进课程进度,帮助同学们......
  • java 同源Cors 解决跨域及填坑总结
    1.为什么会跨域出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影......
  • element-ui table组件 el-table-column宽度和对应位置总结 width="100"
    element-uitable组件el-table-column宽度和对应位置总结以三列为例1.如果都不设置width则是平分宽度<el-table-columnprop="name"label="礼品名称"></el-table-c......
  • 前端高频面试题(六)(附答案)
    如何优化动画?对于如何优化动画,我们知道,一般情况下,动画需要频繁的操作DOM,就就会导致页面的性能问题,我们可以将动画的position属性设置为absolute或者fixed,将动画脱离文档流......
  • pyest+appium实现APP自动化测试,思路全总结在这里
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试01appium......
  • UIView Animation 动画学习总结
    目录一、前言二、UIViewAnimation2.1简单动画2.2关键帧动画2.3View的转换三、CALayerAnimation3.1基本动画(CABasicAnimation)3.2关键帧动画(CAKeyframeAnimation)3.3......
  • 微服务网关Gateway实践总结
    有多少请求,被网关截胡;一、Gateway简介微服务架构中,网关服务通常提供动态路由,以及流量控制与请求识别等核心能力,在之前的篇幅中有说过Zuul组件的使用流程,但是当下Gatewa......
  • 01-Flink概述
    1.源起和设计理念https://flink.apache.org/在Flink官网主页的顶部可以看到,项目的核心目标,是“数据流上的有状态计算”(StatefulComputationsoverDataStreams)。......