【Flink】面试题精简版(持续更新)_flink面试-程序员宅基地

技术标签: 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故障恢复和重启策略_一杯咖啡半杯糖的博客-程序员宅基地_flink故障恢复

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

6、Flink分区策略(9种)

详细知识在:Flink 分区策略_一杯咖啡半杯糖的博客-程序员宅基地_flink的分区策略

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

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

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

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

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

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

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

CustomPartitionerWrapper (用户自定义分区器)

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

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

7、Flink状态存储在哪里?

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

Flink状态后端(1.13版本及大于1.13版本适用)_一杯咖啡半杯糖的博客-程序员宅基地

存在状态后端

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到底设置多少内存为好_一杯咖啡半杯糖的博客-程序员宅基地

 Flink的taskmanager到底设置多少内存为好_一杯咖啡半杯糖的博客-程序员宅基地

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如何实现容错_一杯咖啡半杯糖的博客-程序员宅基地

通过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概念_一杯咖啡半杯糖的博客-程序员宅基地

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的基类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_23225111/article/details/124495260

智能推荐

方法反射的基本操作_方法 反射-程序员宅基地

文章浏览阅读1.1k次。方法反射:1、如何获取某个方法,方法的名称和方法的参数列表才能唯一决定某个方法2、方法反射的操作 method.invoke(对象,参数列表)public class MethodDemo1 { public static void main(String[] args) { /** * 要获取print(int,int)方法 * 1、要获取一个方法就是获取类的信息,首先要获取类的类型 */ A a1 = _方法 反射

Win10系统Word中无法导入NoteExpress插件,显示加载时出现运行失败_noteexpress导入不了-程序员宅基地

文章浏览阅读1.5w次,点赞8次,收藏17次。前言一般来说,下载完NoteExpress后,打开word就能够直接出现NoteExpress插件了,如下之前我的都是能用的,但是有一天在我写论文需要导入参考文献的时候,却意外发现,它它它不见了!!!去网上检索,无非就是这两种方法:方法1:在noteexpress中安装1如图所示,找到noteexpress的快捷方式,然后右键单击该快捷方式,然后选择“获取管理员权限”,有的人的电脑显示的是“以管理员身份运行”,都一样的。打开noteexpressWord中noteexpress插件无法安装的_noteexpress导入不了

数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB-程序员宅基地

文章浏览阅读2.6k次。基本信息书名:数字图像处理——使用MATLAB分析与实现(高等学校电子信息类专业定价:69.05元。注 定价是图书封底的标价,售价是顾客支付的价格。作者:蔡利梅,王利娟出版社:清华大学出版社出版日期:注 出版时间受保存的自然因素,未使用的还是新书。ISBN:9787302518228字数:563000页码:356版次:1装帧:平装开本:16开商品标识:[bianma]编辑推荐本书是在作者总结多年从..._数字图像处理蔡利梅课后答案

python机器学习——决策树_python实现连续型变量的回归预测-程序员宅基地

文章浏览阅读779次。python机器学习——决策树_python实现连续型变量的回归预测

我的秋招经验分享(内附校招交流群)-程序员宅基地

文章浏览阅读1.4k次。我的秋招经验分享(内附笔面试干货)本文出自公众号:程序员江湖。满满干货,关注就送。时间过得很快,已经到了九月中旬,从16年读研到现在将近两年的时间里,从一个Java初...

ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍-程序员宅基地

文章浏览阅读232次。如果我是C罗原文ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者其他.1.创建序列 Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE 权限C..._pl/sql body 怎样使用序列

随便推点

【Latex】高级插入图片技巧: 双栏中如何正确插入图片 + 如何多图_latex两栏图片-程序员宅基地

文章浏览阅读4.8w次,点赞17次,收藏70次。【问题描述】貌似multicols环境中不能放图片,即\begin{multicols}{2}\begin{figure}\centering\includegraphics[width=0.309\textwidth]{fig0001.eps}\caption{图} \label{fig:1}\end{figure}\end{multicols} 是不允许的,图片_latex两栏图片

python去掉列表中的单引号_从Python中的列表中删除单引号-程序员宅基地

文章浏览阅读4.9k次。我有一个输入字符串:result = '"testing","0.8841","642000.0","80.014521","-60.940653","4522126666","1500854400","","1500842014000","name","80.014521","-60.996532","sampledevice","3","name"'data = result.split("\..._列表 单引号

面试题62 圆圈中最后剩下的数字(java)_c++问题即,1, 2, ..., n这n个数字排成一个圆圈,从数字1开始,每次从这个圆圈里删除-程序员宅基地

文章浏览阅读229次。0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2..._c++问题即,1, 2, ..., n这n个数字排成一个圆圈,从数字1开始,每次从这个圆圈里删除

Android内存阀值修改--内存回收机制配置_手机内存回收机制如何更改-程序员宅基地

文章浏览阅读1.8w次。Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中, 直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。那Android什么时候结束进程?结束哪个进程呢?Android是依据一个名为LRU(last recent_手机内存回收机制如何更改

HQL:使用面向对象的HQL查询语言_hql 面向对象-程序员宅基地

文章浏览阅读1.5k次。Query接口1.不可省略的formString hql="form Student";//创建Query实例Query query = Session.createQuery(hql);//执行HQL调用list(),返回List集合List studentList = query.list();2.select//别名的使用String hql="select s.nam_hql 面向对象

spring boot + mybatis-plus返回树形结构数据_数据库返回树形结构数据-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏15次。以上是我从最近的项目中学到的spring boot + mybatis-plus返回树形结构的方法。_数据库返回树形结构数据

推荐文章

热门文章

相关标签