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

1.Flink 计算资源的调度是如何实现的?**

TaskManager中最细粒度的资源是Task slot,代表了一个固定大小的资源子集,每个TaskManager会将其所占有的资源平分给它的slot。

通过调整 task slot 的数量,用户能够定义task之间是如何互相隔离的。每个 TaskManager 有一个slot,也就意味着每个task运行在独立的 JVM 中。每个 TaskManager 有多个slot的话,也就是说多个task运行在同一个JVM中。

而在同一个JVM过程中的task,能够共享TCP连贯(基于多路复用)和心跳音讯,能够缩小数据的网络传输,也能共享一些数据结构,肯定水平上缩小了每个task的耗费。每个slot能够承受单个task,也能够承受多个间断task组成的pipeline,如下图所示,FlatMap函数占用一个taskslot,而key Agg函数和sink函数共用一个taskslot:

2.简述Flink的数据抽象及数据交换过程?**

Flink 为了防止JVM的固有缺点例如java对象存储密度低,FGC影响吞吐和响应等,实现了自主治理内存。

MemorySegment就是Flink的内存形象。默认状况下,一个MemorySegment能够被看做是一个32kb大的内存块的形象。这块内存既能够是JVM里的一个byte[],也能够是堆外内存(DirectByteBuffer)。在MemorySegment这个形象之上,Flink在数据从operator内的数据对象在向TaskManager上转移,准备被发给下个节点的过程中,应用的形象或者说内存对象是Buffer。对接从Java对象转为Buffer的两头对象是另一个形象StreamRecord。

3.Flink 中的分布式快照机制是如何实现的?**

Flink的容错机制的外围局部是制作分布式数据流和操作算子状态的一致性快照。这些快照充当一致性checkpoint,零碎能够在产生故障时回滚。 Flink用于制作这些快照的机制在“分布式数据流的轻量级异步快照”中进行了形容。它受到分布式快照的规范Chandy-Lamport算法的启发,专门针对Flink的执行模型而定制。

barriers在数据流源处被注入并行数据流中。快照n的barriers被插入的地位(咱们称之为Sn)是快照所蕴含的数据在数据源中最大地位。例如,在Apache Kafka中,此地位将是分区中最初一条记录的偏移量。将该地位Sn报告给checkpoint协调器(Flink的JobManager)。而后barriers向上游流动。当一个两头操作算子从其所有输出流中收到快照n的barriers时,它会为快照n收回barriers进入其所有输入流中。一旦sink操作算子(流式DAG的末端)从其所有输出流接管到barriers n,它就向checkpoint协调器确认快照n实现。在所有sink确认快照后,象征快照着已实现。一旦实现快照n,job将永远不再向数据源申请Sn之前的记录,因为此时这些记录(及其后续记录)将曾经通过整个数据流拓扑,也即是曾经被解决完结。

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