【Flink】面试题精简版(持续更新)

【Flink】面试题精简版(持续更新)作为大数据领域炙手可热的大数据组件,flink作为大数据行业跳槽必问的组件,整理一些Flink相关的面试题供大家参考,有些题言简意赅即可,大多数的博客冗余一堆的知识点,看完要好久,我想帮大家提炼总结出核心的点,以帮助大家临阵磨枪,短时间掌握,当你把知识提炼出来,你会发现你的知识进步了,当你把简单提炼的知识再用自己的语言详细的说出来,那你就成为很厉害的人了,希望帮助大家收获到自己满意的offer。1、Flink和SparkStreaming有什么区别1、Flink是实时处理引擎,基于事件驱动。而

【Flink】面试题精简版(持续更新)

作为大数据领域炙手可热的大数据组件,Flink作为大数据行业跳槽必问的组件,整理一些Flink相关的面试题供大家参考,有些题言简意赅即可,大多数的博客冗余一堆的知识点,看完要好久,我想帮大家提炼总结出核心的点,以帮助大家临阵磨枪,短时间掌握,当你把知识提炼出来,你会发现你的知识进步了,当你把简单提炼的知识再用自己的语言详细的说出来,那你就成为很厉害的人了,希望帮助大家收获到自己满意的offer。

1、Flink和Spark Streaming有什么区别

1、Flink 是实时处理引擎,基于事件驱动。而 Spark Streaming 是微批(Micro-Batch)的模型。(根本区别,一定要说出来)

2、时间机制:Spark Streaming只支持处理时间。 Flink支持处理时间、事件时间、注入时间。同时也支持watermark来处理滞后数据。

3、容错机制:Spark Streaming 通过checkpoint实现数据不丢失,但无法做到恰好一次处理语义。Flink 则使用两阶段提交协议和checkpoint实现精准一次处理,容错性好

2、Flink的编程模型

Source 数据输入
Transformation  中间转换
sink 数据输出

3、Flink如何设置并行度(括号里说出来就是真正用过的而不是光背答案)

详细知识在:

1、系统层面(flink客户端的配置yml文件中设置)

2、客户端层面(提交flink run -p的时候设置)

3、执行环境层面(构建Flink环境时getExecutionEnvironment.setParallelism(2)设置)

4、算子层面(算子.setParallelism(3),实际算子时设置)

优先级算子设置>执行环境>客户端>系统

(实际业务中通常设置和kafka分区数一样或者kafka分区倍数的并行度)

4、Flink的Slot和parallelism区别

 slot是指单个taskmanager并发执行能力,parallelism指的是所有taskmanager的并发能力

 5、Flink重启策略有哪些(括号里说出来就是真正用过的而不是光背答案)

详细知识在:Flink故障恢复和重启策略_一杯咖啡半杯糖的博客-CSDN博客_flink故障恢复

固定延迟重启策略
故障率重启策略
没有重启策略
Fallback重启策略(默认是这个Fallback重启策略)

6、Flink分区策略(9种)

详细知识在:Flink 分区策略_一杯咖啡半杯糖的博客-CSDN博客_flink的分区策略

GlobalPartitioner (数据发到下游算子的第一个实例)

ShufflePartitioner( 数据随机分发到下游算子)

RebalancePartitioner (数据循环发送到下游的实例)

RescalePartitioner (根据上下游算子的并行度,循环输出到下游算子)

BroadcastPartitioner (输出到下游算子的每个实例中)

ForwardPartitioner (上下游算子并行度一样)

KeyGroupStreamPartitioner (按 Key 的 Hash 值输出到下游算子)

CustomPartitionerWrapper (用户自定义分区器)

BinaryHashPartitioner  (对BinaryRowData这种数据进行hash分区)

(实际使用在算子后加分区器)

7、Flink状态存储在哪里?

详细的看​​​​​​Flink状态后端(1.13版本之前适用)_一杯咖啡半杯糖的博客-CSDN博客

Flink状态后端(1.13版本及大于1.13版本适用)_一杯咖啡半杯糖的博客-CSDN博客

存在状态后端

1.13版本之前

MemoryStateBackend    开发时使用
FsStateBackend     生产时使用,常用
RocksDBStateBackend   生产时使用,非常大的状态时用

1.13版本之后

HashMapStateBackend  相当于MemoryStateBackend和FsStateBackend,根据api不同
EmbeddedRocksDBStateBackend   生产时使用,非常大的状态时用

8、Flink中的时间有哪几类?(括号里说出来就是真正用过的而不是光背答案)

事件时间(event time):数据本身真正产生时间,(生产环境中用这个)
摄取时间(ingestion time): Flink 读取数据时的时间
处理时间(processing time): Flink中算子处理数据的时间

9、你们公司怎么提交的实时任务?(括号里说出来就是真正用过的而不是光背答案)

flink提交有几种模式

yarn-session模式

Application模式

Per-Job模式(生产中一般用这个,因为不论是监控还是提交都很方便,一个任务yarn分配一次)

关于内存分配的内容详见Flink的jobmanager到底设置多少内存为好_一杯咖啡半杯糖的博客-CSDN博客

 Flink的taskmanager到底设置多少内存为好_一杯咖啡半杯糖的博客-CSDN博客

10、Flink的watermark?(括号里说出来就是真正用过的而不是光背答案)

Watermark 是Flink处理乱序事件的机制,基于事件时间,通常用来触发窗口计算
watermark 可以理解一个特殊的数据,插入到流里面
watermark也可以表示为   当前时间戳-设置的延迟时间,
假如窗口是12点到12点05,最大延迟时间1min,
假如来了条数据是12点07,,那水印就是12点07-1min为12点06  > 12点05,就可以出发上面的窗口进行计算了)

11、Flink集群有的角色及其作用?

TaskManager:实际执行计算,与TaskManager状态的传递
JobManager:任务和资源管理,管理TaskManager,协调Checkpoints,故障恢复
Client客户端:与jobmanager交互并把任务提交到集群

12、Flink如何容错(重要,面试很频繁

更多细节及理解请看Flink如何实现容错_一杯咖啡半杯糖的博客-CSDN博客

通过Checkpoint(基于ABS算法)实现容错
具体过程如下
1、JobManager定期向source发送Checkpoint的请求(由代码中的Checkpoint配置决定),向下游发送CheckpointBarrier
2、每个计算算子收到CheckpointBarrier,进行Barrier对齐,对齐后存储Checkpoint到状态后端,
3、sink节点Barrier对齐后,多个sink确认下Checkpoint是否正常,如果正常JobManager确定本次Checkpoint结束
4、中途失败只需要拿取前面的Checkpoint重新计算,进行恢复

13、Flink 的运行中必须依靠 Hadoop组件吗?

 Flink可以不依赖Hadoop组件执行,例如可以跑单机版(但是实际生产环境使用通常是提交flink到yarn上运行,生产是需要hadoop组件的)

14、Flink 资源管理中 Task Slot 的概念 

 更多细节及理解请看Flink的Slot概念_一杯咖啡半杯糖的博客-CSDN博客

Slot决定了单个TaskManager并发执行能力(TaskManager 中的不同slot不会CPU隔离,也不会在运行时相互竞争Flink托管内存 ,而是一开始就瓜分了Flink托管内存)

 15、Flink 的状态

Flink状态分为两个

1、Keyed State(键控状态)

2、Operator State (算子状态)

(实际生产中通常使用Keyed State中的ValueState、MapState)

16、Flink Table & SQL中TableEnvironment这个类有什么作用(红色说出来说明看过源码)

在内部catalog中注册表
注册catalogs
加载可插拔的模块
执行SQL查询
注册用户定义(标量,表或聚合)函数
DataStream和Table之间进行转换
StreamExecutionEnvironment的基类

今天的文章【Flink】面试题精简版(持续更新)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30169.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注