美文网首页
7. Flink中的内存管理是如何做的?

7. Flink中的内存管理是如何做的?

作者: bigdata张凯翔 | 来源:发表于2020-08-22 15:01 被阅读0次
Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做 MemorySegment,它代表了一段固定长度的内存(默认大小为 32KB),也是 Flink 中最小的内存分配单元,并且提供了非常高效的读写方法。每条记录都会以序列化的形式存储在一个或多个MemorySegment中。Flink堆内存划分: image.png

Network Buffers: 一定数量的32KB大小的缓存,主要用于数据的网络传输。在 TaskManager启动的时候就会分配。默认数量是2048个,可以通过 taskmanager.network.numberOfBuffers来配置。

Memory Manager Pool:这是一个由MemoryManager管理的,由众多MemorySegment组成的超大集合。Flink中的算法(如 sort/shuffle/join)会向这个内存池申请MemorySegment,将序列化后的数据存于其中,使用完后释放回内存池。默认情况下,池子占了堆内存的70% 的大小。
Remaining (Free) Heap: 这部分的内存是留给用户代码以及TaskManager 的数据结构使用的,可以把这里看成的新生代。

Flink大量使用堆外内存。详细参考:https://www.cnblogs.com/ooffff/p/9508271.html

相关文章

  • 7. Flink中的内存管理是如何做的?

    Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上,这个内存块叫做 MemorySeg...

  • flink大纲知识

    flink集群部署flink反压flink拓扑架构flink的内存管理

  • filnk 学习

    并且Flink可以定制化内存管理。在这点,如果要对比Flink和Spark的话,Flink并没有将内存完全交给应用...

  • flink的内存管理

    在大数据面前,JVM的内存结构和GC机制往往会成为掣肘 1. 对象开销:在HotSpot中,每个对象占用的内存空间...

  • Flink-TaskExecutor内存分析

    Flink的TaskExecutor/Container进程主要运行工作线程,其内存管理对Flink作业的运行有重...

  • Flink性能调优(一)

    1 配置内存 操作场景 Flink是依赖内存计算,计算过程中内存不够对Flink的执行效率影响很大。可以通过监控G...

  • Flink内存管理

  • Flink内存管理

    Flink内存管理 1.简介 自从2003-2006年,Google发表了三篇著名的大数据相关论文(Google ...

  • MemorySegment

    概述 就像我们所知道的,Flink采用了自己管理内存的方式,或者说积极的内存管理,而MemorySegment就是...

  • Flink JobManager | TaskManager内存

    Flink内存模型分析 JobManager内存模型 TaskManager内存模型 内存模型分析 Flink使用...

网友评论

      本文标题:7. Flink中的内存管理是如何做的?

      本文链接:https://www.haomeiwen.com/subject/mcxlzhtx.html