共计 1382 个字符,预计需要花费 4 分钟才能阅读完成。
锁屏面试题百日百刷,每个工作日保持更新面试题。 请看到最初就能获取你想要的, 接下来的是今日的面试题:
1.Flink 的 kafka 连接器有什么特地的中央?**
Flink 源码中有一个独立的 connector 模块,所有的其余 connector 都依赖于此模块,Flink 在 1.9 版本公布的全新 kafka 连接器,摒弃了之前连贯不同版本的 kafka 集群须要依赖不同版本的 connector 这种做法,只须要依赖一个 connector 即可。
2. 说说 Flink 的内存治理是如何做的?**
Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预调配的内存块上。此外,Flink 大量的应用了堆外内存。如果须要解决的数据超出了内存限度,则会将局部数据存储到硬盘上。Flink 为了间接操作二进制数据实现了本人的序列化框架。实践上 Flink 的内存治理分为三局部:
Network Buffers:这个是在 TaskManager 启动的时候调配的,这是一组用于缓存网络数据的内存,每个块是 32K,默认调配 2048 个,能够通过“taskmanager.network.numberOfBuffers”批改
Memory Manage pool:大量的 Memory Segment 块,用于运行时的算法(Sort/Join/Shuffle 等),这部分启动的时候就会调配。上面这段代码,依据配置文件中的各种参数来计算内存的调配办法。(heap or off-heap,这个放到下节谈),内存的调配反对预调配和 lazy load,默认懒加载的形式。
User Code,这部分是除了 Memory Manager 之外的内存用于 User code 和 TaskManager 自身的数据结构。
3. 说说 Flink 的序列化如何做的?**
Java 自身自带的序列化和反序列化的性能,然而辅助信息占用空间比拟大,在序列化对象时记录了过多的类信息。Apache Flink 摒弃了 Java 原生的序列化办法,以独特的形式解决数据类型和序列化,蕴含本人的类型描述符,泛型类型提取和类型序列化框架。TypeInformation 是所有类型描述符的基类。它揭示了该类型的一些根本属性,并且能够生成序列化器。TypeInformation 反对以下几种类型:
BasicTypeInfo: 任意 Java 根本类型或 String 类型
BasicArrayTypeInfo: 任意 Java 根本类型数组或 String 数组
WritableTypeInfo: 任意 Hadoop Writable 接口的实现类
TupleTypeInfo: 任意的 Flink Tuple 类型 (反对 Tuple1 to Tuple25)。Flink tuples 是固定长度固定类型的 Java Tuple 实现
CaseClassTypeInfo: 任意的 Scala CaseClass(包含 Scala tuples)
PojoTypeInfo: 任意的 POJO (Java or Scala),例如,Java 对象的所有成员变量,要么是 public 修饰符定义,要么有 getter/setter 办法
GenericTypeInfo: 任意无奈匹配之前几种类型的类
针对前六种类型数据集,Flink 皆能够主动生成对应的 TypeSerializer,能十分高效地对数据集进行序列化和反序列化。
全部内容在 git 上, 理解更多请点我头像或到我的主页去取得,谢谢 **