共计 1381 个字符,预计需要花费 4 分钟才能阅读完成。
锁屏面试题百日百刷,每个工作日保持更新面试题。 请看到最初就能获取你想要的, 接下来的是今日的面试题:
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 上, 理解更多请点我头像或到我的主页去取得,谢谢 **