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

1、Flink如何保证精确一次性消费?
参考答案:
Flink 保证精确一次性消费主要依赖于两种Flink机制
(1)Checkpoint机制
(2)二阶段提交机制
Checkpoint机制
主要是当Flink开启Checkpoint的时候,会往Source端插入一条barrir,然后这个barrir随着数据流向一直流动,当流入到一个算子的时候,这个算子就开始制作checkpoint,制作的是从barrir来到之前的时候当前算子的状态,将状态写入状态后端当中。然后将barrir往下流动,当流动到keyby 或者shuffle算子的时候,例如当一个算子的数据,依赖于多个流的时候,这个时候会有barrir对齐,也就是当所有的barrir都来到这个算子的时候进行制作checkpoint,依次进行流动,当流动到sink算子的时候,并且sink算子也制作完成checkpoint会向jobmanager 报告 checkpoint n 制作完成。
二阶段提交机制
Flink 提供了CheckpointedFunction与CheckpointListener这样两个接口,CheckpointedFunction中有snapshotState方法,每次checkpoint触发执行方法,通常会将缓存数据放入状态中,可以理解为一个hook,这个方法里面可以实现预提交,CheckpointListyener中有notifyCheckpointComplete方法,checkpoint完成之后的通知方法,这里可以做一些额外的操作。例如FLinkKafkaConumerBase使用这个来完成Kafka offset的提交,在这个方法里面可以实现提交操作。在2PC中提到如果对应流程例如某个checkpoint失败的话,那么checkpoint就会回滚,不会影响数据一致性,那么如果在通知checkpoint成功的之后失败了,那么就会在initalizeSate方法中完成事务的提交,这样可以保证数据的一致性。最主要是根据checkpoint的状态文件来判断的。
2、Flink的Slot和parallelism有什么区别?
参考答案:
slot是指taskmanager的并发执行能力,假设我们将 taskmanager.numberOfTaskSlots 配置为3那么每一个 taskmanager 中分配3个 TaskSlot, 3个 taskmanager 一共有9个TaskSlot。
parallelism是指taskmanager实际使用的并发能力。假设我们把 parallelism.default 设置为1,那么9个 TaskSlot 只能用1个,有8个空闲。
3、Flink有没有重启策略?说说有哪几种?
参考答案:
Flink 实现了多种重启策略。
(1)固定延迟重启策略(Fixed Delay Restart Strategy)
(2)故障率重启策略(Failure Rate Restart Strategy)
(3)没有重启策略(No Restart Strategy)
(4)Fallback重启策略(Fallback Restart Strategy)
4、Flink出现数据倾斜怎么办?
参考答案:
(1)Flink数据倾斜如何查看:
在flink的web ui中可以看到数据倾斜的情况,就是每个subtask处理的数据量差距很大,例如有的只有一M 有的100M 这就是严重的数据倾斜了。
(2)KafkaSource端发生的数据倾斜
例如上游kafka发送的时候指定的key出现了数据热点问题,那么就在接入之后,做一个负载均衡(前提下游不是keyby)。
(3)聚合类算子数据倾斜
预聚合加全局聚合
5、Flink checkpoint的超时问题如何解决?
参考答案:
(1)是否网络问题
(2)是否是barrir问题
(3)查看webui,是否有数据倾斜
(4)有数据倾斜的话,那么解决数据倾斜后,会有改善
6、Flink中的时间有哪几类?
参考答案:
Flink 中的时间和其他流式计算系统的时间一样分为三类:事件时间,摄入时间,处理时间三种。如果以 EventTime 为基准来定义时间窗口将形成EventTimeWindow,要求消息本身就应该携带EventTime。如果以 IngesingtTime 为基准来定义时间窗口将形成 IngestingTimeWindow,以 source 的systemTime为准。如果以 ProcessingTime 基准来定义时间窗口将形成ProcessingTimeWindow,以 operator 的systemTime 为准。
7、Flink Table & SQL 熟悉吗?TableEnvironment这个类有什么作用?
参考答案:
TableEnvironment是Table API和SQL集成的核心概念。这个类主要用来:
(1)在内部catalog中注册表
(2)注册外部catalog
(3)执行SQL查询
(4)注册用户定义(标量,表或聚合)函数
(5)将DataStream或DataSet转换为表
(6)持有对ExecutionEnvironment或StreamExecutionEnvironment的引用
8、简单介绍一下Flink cep状态编程?
参考答案:
Complex Event Processing(CEP):
FLink Cep 是在FLink中实现的复杂时间处理库,CEP允许在无休止的时间流中检测事件模式,让我们有机会掌握数据中重要的部分,一个或多个由简单事件构成的时间流通过一定的规则匹配,然后输出用户想得到的数据,也就是满足规则的复杂事件。
9、简单介绍下Flink的CBO,逻辑执行计划和物理执行计划?
参考答案:
Flink的优化执行其实是借鉴的数据库的优化器来生成的执行计划。
CBO,成本优化器,代价最小的执行计划就是最好的执行计划。传统的数据库,成本优化器做出最优化的执行计划是依据统计信息来计算的。Flink 的成本优化器也一样。Flink 在提供最终执行前,优化每个查询的执行逻辑和物理执行计划。这些优化工作是交给底层来完成的。根据查询成本执行进一步的优化,从而产生潜在的不同决策:如何排序连接,执行哪种类型的连接,并行度等等。
10、Flink 异常数据怎么处理
参考答案:
异常数据在我们的场景中,一般分为缺失字段和异常值数据。
异常值: 例如宝宝的年龄的数据,例如对于母婴行业来讲,一个宝宝的年龄是一个至关重要的数据,可以说是最重要的,因为宝宝大于3岁几乎就不会在母婴上面购买物品。像我们的有当日、未知、以及很久的时间。这样都属于异常字段,这些数据我们会展示出来给店长和区域经理看,让他们知道多少个年龄是不准的。如果要处理的话,可以根据他购买的时间来进行实时矫正,例如孕妇服装、奶粉的段位、纸尿裤的大小,以及奶嘴啊一些能够区分年龄段的来进行处理。我们并没有实时处理这些数据,我们会有一个底层的策略任务夜维去跑,一个星期跑一次。
缺失字段: 例如有的字段真的缺失的很厉害,能修补就修补。不能修补就放弃,就像上家公司中的新闻推荐过滤器。
持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库
边栏推荐
- What is the minimum change price of PTA futures? How can PTA futures be safe?
- 合并K个升序链表---2022/02/26
- Mathematical foundations of information security Chapter 3 - finite fields (II)
- Computing philosophy behind authoring
- Go path: goroot & gopath
- Don't you understand the design and principle of thread pool? Break it up and crush it. I'll teach you how to design the thread pool
- Mathematical foundations of information security Chapter 3 - finite fields (I)
- 6-1 how many words are needed to form a sentence?
- TiDB-unsafe recover(tikv宕机数大于等于一半副本数)
- 关于元素位置和尺寸
猜你喜欢

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

Service learning notes 02- actual combat startservice and bindservice

Connect the server with springboard / fortress through xshell

Sohu tout le personnel a été escroqué, quels problèmes ont été exposés?

05_ Feature Engineering - dimension reduction

端口规划与APJ

ffmpeg硬件编解码Nvidia GPU

Port planning and APJ

智能化整体图例,布线、安防、广播会议、电视、楼宇、消防、电气图的图例【转自微信公众号弱电课堂】

QLineEdit 设置输入掩码
随机推荐
6-5 统计单词数量(文件)(*)
Tidb GC related problems
定制 or 订阅?未来中国 SaaS 行业发展趋势是什么?
信息安全数学基础 Chapter 1——整除
What problems are exposed when all Sohu employees are cheated?
TestPattern error
Centos7 server configuration (IV) -- installing redis
Computing philosophy behind authoring
Typescipt Basics
6-1 read string (*) from file
Test and analysis of tidb write hotspot
【线上问题】Timeout waiting for connection from pool 问题排查
6-2 多个整数的逆序输出-递归
Service学习笔记04- 其他服务实现方式与替代方式
[foundation of deep learning] learning of neural network (3)
6-8 有结构文件的读写1
聚类方法汇总
端口规划与APJ
【深度学习基础】神经网络的学习(3)
There are so many open source projects. This time, I'll show you the differences between different versions and understand the meaning of alpha version, beta version and RC version