字节跳动大数据开发面经答案汇总之Flink篇

1.Flink的组成

  • jobmanager:相当于一个集群的Master,是整个集群的协调者,负责接收job
  • taskmanager:实际负责的Worker
  • client:flink程序提交的客户端,当用户提交一个Flink程序时,会首先创建一个Client

2.Flink流批一体解释一下

  • Flink 使用一个引擎就支持了DataSet API 和 DataStream API。其中DataSet API用来处理有界流,DataStream API既可以处理有界流又可以处理无界流,这样就实现了流批一体

3.Flink和SparkStreaming区别

  • 第一,计算速度的不同,flink是真正的实时计算框架,而sparkstreaming是一个准实时微批次的计算框架,也就是说,sparkstreaming的实时性比起flink,差了一大截。
  • 第二,架构模型的不同,Spark Streaming 在运行时的主要角色包括:Driver、Executor,而Flink 在运行时主要包含:Jobmanager、Taskmanager。
  • 第三,时间机制的不用,Spark Streaming 只支持处理时间,而Flink支持的时间语义包括处理时间、事件时间、注入时间,并且还提供了watermark机制来处理迟到数据。

4.那Flink shuffle呢?你了解吗?

  • 其实就是redistribute,一对多

5.watermark用过吗

  • 它就是一种特殊的时间戳,作用就是为了让事件时间慢一点,等迟到的数据都到了,才触发窗口计算
  • 当watermark等于窗口时间的时候,就会触发计算

6.checkpoint Chandy-Lamport算法

  • flink应用在启动的时候,flink的JobManager创建CheckpointCoordinator
  • CheckpointCoordinator(检查点协调器) 周期性的向该流应用的所有source算子发送 barrier(屏障)
  • 当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到指定的持久化存储(hdfs)中,最后向CheckpointCoordinator报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理
  • 下游算子收到barrier之后,会暂停自己的数据处理过程,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身快照情况,同时向自身所有下游算子广播该barrier,恢复数据处理。
  • 每个算子按照 上面这个操作 不断制作快照并向下游广播,直到最后barrier传递到sink算子,快照制作完成。
  • 当CheckpointCoordinator收到所有算子的报告之后,认为该周期的快照制作成功; 否则,如果在规定的时间内没有收到所有算子的报告,则认为本周期快照制作失败。

7.如何用checkpoint和watermark防止读到乱序数据

  • watermark设置延迟时间
  • checkpoint进行持久化

8.Kafka和Flink分别怎么实现exactly once,问的比较深入,我只回答了一些用法,二阶段提交说了流程,没说出来机制。

kafka:ack=-1+幂等性

flink利用checkpoint检查点保证精准一次性

#数据人的面试交流地##大数据开发面经##sql##面经##数据研发#
全部评论
如果只是这些,感觉太基础了
点赞 回复 分享
发布于 2023-05-28 11:39 广东
Flink的组成很清晰,但是我想问一下jobmanager和taskmanager之间是如何通信的?
点赞 回复 分享
发布于 2023-05-28 14:54 湖南

相关推荐

安静的垂耳兔在泡澡:ks已经第八次投递了,它起码挂了还让你再投,不错了
点赞 评论 收藏
分享
10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
2 30 评论
分享
牛客网
牛客企业服务