锁屏面试题百日百刷,每个工作日保持更新面试题。请看到最初就能获取你想要的, 接下来的是今日的面试题:

1.Flink 中水印是什么概念,起到什么作用?**

Watermark 是 Apache Flink 为了解决 EventTime 窗口计算提出的一种机制, 实质上是一种工夫戳。 一般来讲Watermark常常和Window一起被用来解决乱序事件。

2.Flink Table & SQL 相熟吗?TableEnvironment这个类有什么作用**

TableEnvironment是Table API和SQL集成的外围概念。这个类次要用来:

在外部catalog中注册表

注册内部catalog

执行SQL查问

注册用户定义(标量,表或聚合)函数

将DataStream或DataSet转换为表

持有对ExecutionEnvironment或StreamExecutionEnvironment的援用

3.Flink是如何反对批流一体的?**

本道面试题考查的其实就是一句话:Flink的开发者认为批处理是流解决的一种非凡状况。批处理是无限的流解决。Flink 应用一个引擎反对了DataSet API 和 DataStream API。

4.Flink是如何做到高效的数据交换的?**

在一个Flink Job中,数据须要在不同的task中进行替换,整个数据交换是有 TaskManager 负责的,TaskManager 的网络组件首先从缓冲buffer中收集records,而后再发送。Records 并不是一个一个被发送的,而是积攒一个批次再发送,batch 技术能够更加高效的利用网络资源。

5.Flink是如何做容错的?**

Flink 实现容错次要靠弱小的CheckPoint机制和State机制。Checkpoint 负责定时制作分布式快照、对程序中的状态进行备份;State 用来存储计算过程中的中间状态。

6.Flink 分布式快照的原理是什么?

Flink的分布式快照是依据Chandy-Lamport算法量身定做的。简略来说就是继续创立分布式数据流及其状态的统一快照。

核心思想是在 input source 端插入 barrier,管制 barrier 的同步来实现 snapshot 的备份和 exactly-once 语义。

7.Flink是如何保障Exactly-once语义的?**

Flink通过实现两阶段提交和状态保留来实现端到端的一致性语义。 分为以下几个步骤:

开始事务(beginTransaction)创立一个长期文件夹,来写把数据写入到这个文件夹外面

预提交(preCommit)将内存中缓存的数据写入文件并敞开

正式提交(commit)将之前写完的临时文件放入目标目录下。这代表着最终的数据会有一些提早

停止(abort)如果回滚,删除临时文件

若失败产生在预提交胜利后,正式提交前。能够依据状态来提交预提交的数据,也可删除预提交的数据。

全部内容在git上,理解更多请点我头像或到我的主页去取得,谢谢**