当前位置: 首页 > news >正文

(十五)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 中。


http://www.mrgr.cn/news/7886.html

相关文章:

  • 【ubuntu24.04】docker安装
  • 编程小白到大神之路
  • lucene搜索关键词错误
  • C# 多线程
  • 宁德时代25届校招网申SHL测评:数字推理25分钟+言语推理19分钟
  • 设计模式-结构性模式-桥接模式
  • 如何利用命令模式实现一个手游后端架构?
  • WorkPlus:为企业内部打造高效沟通的顶级内部通讯软件
  • 亲测解决electron的Unhandled Rejection
  • kafka发送消息-自定义消息发送的拦截器
  • 【自动化测试】python+selenium+谷歌驱动安装记录
  • rapidjson的移植
  • Pandas_merge_join
  • Java nio pipe 通信原理
  • JS基础进阶3-DOM事件
  • Python实现贪心算法
  • 使用分布式锁解决IM聊天数据重复插入的问题
  • STM32中的shell框架搭建
  • 游戏app激励视频广告预加载位置,最大化广告收益
  • 【Redis】基本全局命令