当前位置:网站首页>【先收藏,早晚用得到】49个Flink高频面试题系列(二)
【先收藏,早晚用得到】49个Flink高频面试题系列(二)
2022-06-11 17:40:00 【大数据研习社】
【先收藏,早晚用得到】49个Flink高频面试题系列(二)
持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库

一、Flink 相比传统的 Spark Streaming 有什么区别?
这个问题是一个非常宏观的问题,因为两个框架的不同点非常之多。但是在面试时有非常重要的一点一定要回答出来:Flink 是标准的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批(Micro-Batch)的模型。
下面我们就分几个方面介绍两个框架的主要区别:
(1)架构模型
Spark Streaming 在运行时的主要角色包括:Master、Worker、Driver、Executor,Flink 在运行时主要包含:Jobmanager、Taskmanager和Slot。
(2)任务调度
Spark Streaming 连续不断的生成微小的数据批次,构建有向无环图DAG,Spark Streaming 会依次创建 DStreamGraph、JobGenerator、JobScheduler。
Flink 根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给 JobManager进行处理,JobManager 会根据 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 调度最核心的数据结构,JobManager 根据 ExecutionGraph 对 Job 进行调度。
(3)时间机制
Spark Streaming 支持的时间机制有限,只支持处理时间。Flink 支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。同时也支持 watermark 机制来处理滞后数据。
(4)容错机制
对于 Spark Streaming 任务,我们可以设置 checkpoint,然后假如发生故障并重启,我们可以从上次 checkpoint 之处恢复,但是这个行为只能使得数据不丢失,可能会重复处理,不能做到恰一次处理语义。
Flink 则使用两阶段提交协议来解决这个问题。
二、Flink的监控页面,有了解吗,主要关注那些指标?
Flink 主要关注的有:
(1)Flink 任务运行状态
(2)Flink checkpoint 状态统计
(3)taskmamger的状态,内存使用情况以及垃圾回收情况
(4)Flink 的 metrics 是 Flink 公开的一个度量系统,metrics 也可以暴露给外部系统,通过在 Flink 配置文件 conf/flink-conf.yaml 配置即可,Flink原生已经支持了很多reporter,如 JMX、InfluxDB、Prometheus 等等。我们也可以自定义指标通过 metric 收集,实际开发时经常需要查看当前程序的运行状况,Flink 提供了 UI 界面,有比较详细的统计信息。
三、你们的Flink集群规模多大?
大家注意,这个问题看起来是问你实际应用中的Flink集群规模,其实还隐藏着另一个问题:Flink可以支持多少节点的集群规模?
在回答这个问题时候,可以将自己生产环节中的集群规模、节点、内存情况说明,同时说明部署模式(一般是Flink on Yarn),除此之外,用户也可以同时在小集群(少于5个节点)和拥有 TB 级别状态的上千个节点上运行 Flink 任务。
四、Flink如何保证精确一次性消费
Flink 保证精确一次性消费主要依赖于两种Flink机制
1、Checkpoint机制
2、二阶段提交机制
(1)Checkpoint机制
主要是当Flink开启Checkpoint的时候,会往Source端插入一条barrir,然后这个barrir随着数据流向一直流动,当流入到一个算子的时候,这个算子就开始制作checkpoint,制作的是从barrir来到之前的时候当前算子的状态,将状态写入状态后端当中。然后将barrir往下流动,当流动到keyby 或者shuffle算子的时候,例如当一个算子的数据,依赖于多个流的时候,这个时候会有barrir对齐,也就是当所有的barrir都来到这个算子的时候进行制作checkpoint,依次进行流动,当流动到sink算子的时候,并且sink算子也制作完成checkpoint会向jobmanager 报告 checkpoint n 制作完成。
(2)二阶段提交机制
Flink 提供了CheckpointedFunction与CheckpointListener这样两个接口,CheckpointedFunction中有snapshotState方法,每次checkpoint触发执行方法,通常会将缓存数据放入状态中,可以理解为一个hook,这个方法里面可以实现预提交,CheckpointListyener中有notifyCheckpointComplete方法,checkpoint完成之后的通知方法,这里可以做一些额外的操作。例如FLinkKafkaConumerBase使用这个来完成Kafka offset的提交,在这个方法里面可以实现提交操作。在2PC中提到如果对应流程例如某个checkpoint失败的话,那么checkpoint就会回滚,不会影响数据一致性,那么如果在通知checkpoint成功的之后失败了,那么就会在initalizeSate方法中完成事务的提交,这样可以保证数据的一致性。最主要是根据checkpoint的状态文件来判断的。
五、Flink如何做压力测试和监控?
我们一般碰到的压力来自以下几个方面:
(1)产生数据流的速度如果过快,而下游的算子消费不过来的话,会产生背压。 背压的监控可以使用 Flink Web UI(localhost:8081) 来可视化监控,一旦报警就能知 道。一般情况下背压问题的产生可能是由于 sink 这个 操作符没有优化好,做一下 优化就可以了。比如如果是写入 ElasticSearch, 那么可以改成批量写入,可以调 大 ElasticSearch 队列的大小等等策略。
(2)设置 watermark 的最大延迟时间这个参数,如果设置的过大,可能会造成 内存的压力。可以设置最大延迟时间小一些,然后把迟到元素发送到侧输出流中去。 晚一点更新结果。或者使用类似于 RocksDB 这样的状态后端, RocksDB 会开辟 堆外存储空间,但 IO 速度会变慢,需要权衡。
(3)还有就是滑动窗口的长度如果过长,而滑动距离很短的话,Flink 的性能 会下降的很厉害。我们主要通过时间分片的方法,将每个元素只存入一个“重叠窗 口”,这样就可以减少窗口处理中状态的写入。参见链接: https://www.infoq.cn/article/sIhs_qY6HCpMQNblTI9M
(4)状态后端使用 RocksDB,还没有碰到被撑爆的问题。
持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库
边栏推荐
- Service learning notes 01 start method and life cycle
- 删除链表的倒数第N个节点---2022/02/22
- 7-1 均是素数
- 6-8 creating and traversing linked lists
- [foundation of deep learning] learning of neural network (3)
- 拜登下令强制推行零信任架构
- 【深度学习基础】神经网络的学习(3)
- Go get downloaded package path
- Merge two ordered linked lists ---2022/02/24
- 7-2 h0107. Pig-Latin
猜你喜欢

你还不懂线程池的设计及原理吗?掰开揉碎了教你设计线程池

Chorus翻译

Service学习笔记02-实战 startService 与bindService

How to simplify a lot of if... Elif... Else code?

Biden ordered to enforce the zero trust structure

Chorus translation

为什么udp流设置1316字节

Merge K ascending linked lists ---2022/02/26

【Mysql】redo log,undo log 和binlog详解(四)

Authoring share | understanding saml2 protocol
随机推荐
端口规划与APJ
Xie Yang, CEO of authing, was selected into Forbes' 30 under 30 Asia list in 2021
测试基础之:黑盒测试
Qlineedit set input mask
sql server中移除key lookup书签查找
Delete the penultimate node of the linked list ---2022/02/22
6-5 统计单词数量(文件)(*)
Service学习笔记03- 前台服务实战
ArrayList collection, object array
ffmpeg CBR精准码流控制三个步骤
信息安全数学基础 Chapter 4——二次剩余与方根
Use of forcescan in SQL server and precautions
开源项目那么多,这次带你了解个版本的区别,明白alpha版、beta版、rc版是什么意思
What is the minimum change price of PTA futures? How can PTA futures be safe?
Tidb unsafe recover (tikv downtime is greater than or equal to half the number of replicas)
Tidb CDC create task error unknown or incorrect time zone
信息安全数学基础 Chapter 3——有限域(一)
Authing biweekly news: authing forum launched (4.25-5.8)
6-3 读文章(*)
Authing 背后的计算哲学