【先收藏,早晚用得到】100个Flink高频面试题系列(三)

【先收藏,早晚用得到】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岁几乎就不会在母婴上面购买物品。像我们的有当日、未知、以及很久的时间。这样都属于异常字段,这些数据我们会展示出来给店长和区域经理看,让他们知道多少个年龄是不准的。如果要处理的话,可以根据他购买的时间来进行实时矫正,例如孕妇服装、奶粉的段位、纸尿裤的大小,以及奶嘴啊一些能够区分年龄段的来进行处理。我们并没有实时处理这些数据,我们会有一个底层的策略任务夜维去跑,一个星期跑一次。

       缺失字段 例如有的字段真的缺失的很厉害,能修补就修补。不能修补就放弃,就像上家公司中的新闻推荐过滤器。

持续分享有用、有价值、精选的优质大数据面试题
致力于打造全网最全的大数据面试专题题库

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据研习社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值