(十五)Flink 内存管理机制

在大数据领域,很多开源框架(Hadoop、Spark、Storm)都是基于 JVM 运行,但是 JVM 的内存管理机制往往存在着诸多类似 OutOfMemoryError 的问题,主要是因为创建大量的实例,超过 JVM 的最大堆内存限制,没有被有效的回收。这在很大程度上影响了系统的稳定性,因此很多框架都实现了自己的内存管理,从而更好的使用 JVM 来处理大规模数据集。本章我们通过对 Flink 内存模型、JobManager 以及 TaskManager 内存配置的介绍,全方位了解 Flink 在内存方面是如何自主管理的。

目录

JobManager 内存管理

TaskManager 内存管理


Flink 自主内部管理

Apache Flink 基于 JVM 的高效处理能力,依赖于其对各组件内存用量的细致掌控。从一开始就使用了自主内存管理,避开了 JVM 内存管理在大数据场景下的问题提升了计算效率。

Flink 的内存管理和操作系统管理内存一样,将内存划分为内存段、内存页等结构。

  • 内存段

Flink 并不是将大量对象存在堆内存上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做 MemorySegment,它代表了一段固定长度的内存(默认大小为 32KB),也是 Flink 中最小的内存分配单元,并且提供了非常高效的读写方法,很多运算可以直接操作二进制数据,不需要反序列化即可执行。每条记录都会以序列化的形式存储在一个或多个 MemorySegment 中。

你可能感兴趣的:(Flink全景解析,flink,大数据,实时数据,flink,内存管理,内存管理机制)