字节跳动大数据开发面经答案汇总之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##面经##数据研发#