当前位置:网站首页>【先收藏,早晚用得到】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岁几乎就不会在母婴上面购买物品。像我们的有当日、未知、以及很久的时间。这样都属于异常字段,这些数据我们会展示出来给店长和区域经理看,让他们知道多少个年龄是不准的。如果要处理的话,可以根据他购买的时间来进行实时矫正,例如孕妇服装、奶粉的段位、纸尿裤的大小,以及奶嘴啊一些能够区分年龄段的来进行处理。我们并没有实时处理这些数据,我们会有一个底层的策略任务夜维去跑,一个星期跑一次。
缺失字段: 例如有的字段真的缺失的很厉害,能修补就修补。不能修补就放弃,就像上家公司中的新闻推荐过滤器。
持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库
边栏推荐
- 6-1 从文件读取字符串(*)
- spawn ./ gradlew EACCES at Process. ChildProcess._ handle. onexit
- which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mod
- 你还不懂线程池的设计及原理吗?掰开揉碎了教你设计线程池
- tidb-写热点的测试及分析
- Authing biweekly news: online application market (5.10-5.22)
- [online problem] timeout waiting for connection from pool
- 【题解】Codeforces Round #798 (Div. 2)
- [foundation of deep learning] learning of neural network (3)
- Foreach traverses collections and collection containers
猜你喜欢

Port planning and APJ

Read and understand the development plan for software and information technology service industry during the "14th five year plan"

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

光纤熔接知识汇总【转载自微信公众号弱电智能化工程2018】

Service学习笔记01-启动方式与生命周期

Delete the penultimate node of the linked list ---2022/02/22

Vscode configures eslint to automatically format with an error "the setting is deprecated. use editor.codeactionsonsave instead with a source“

Use exe4j to convert The jar file is packaged as Exe file

Authing biweekly news: online application market (5.10-5.22)

Semaphore PV operation of process interaction and its code implementation
随机推荐
删除链表的倒数第N个节点---2022/02/22
6-5 count the number of words (file) (*)
Authing 背后的计算哲学
Classification and method of feature fusion
Hash表、 继承
Bentley 使用 Authing 快速实现应用系统与身份的集成
Centos7 server configuration (IV) -- installing redis
Mathematical basis of information security Chapter 1 - Division
05_ Feature Engineering - dimension reduction
Bracket generation ---2022/02/25
Threejs uses indexeddb cache to load GLB model
Custom or subscription? What is the future development trend of China's SaaS industry?
Qlineedit set input mask
TestPattern error
信息安全数学基础 Chapter 4——二次剩余与方根
6-8 创建、遍历链表
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_ mod
6-1 how many words are needed to form a sentence?
CentOS7服务器配置(四)---安装redis
Summary of clustering methods