Fork me on GitHub

Flink内存管理和优化

目录

  • 背景
  • 第一部分 Flink内存管理详解
  • 第二部分 Flink内存优化
  • 第三部分 总结
  • 参考文献及资料

背景

Flink计算框架和Spark相同,都是基于JVM虚拟机实现的。基于 JVM 的数据分析引擎都需要面对将大量数据存到内存中,这就不得不面对 JVM 存在的几个问题:

  1. Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。
  2. Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大内存空间的JVM来说,GC 会达到秒级甚至分钟级。
  3. OOM 问题影响稳定性。OutOfMemoryError是分布式计算框架经常会遇到的问题,当JVM中所有对象大小超过分配给JVM的内存大小时,就会发生OutOfMemoryError错误,导致JVM崩溃,分布式框架的健壮性和性能都会受到影响。

第一部分

参考文献及资料

1、《Deep Dive: Apache Spark Memory Management》介绍视频,链接:https://youtu.be/dPHrykZL8Cg

2、探索Spark Tungsten的秘密,链接:https://github.com/hustnn/TungstenSecret

本文标题:Flink内存管理和优化

文章作者:rong xiang

发布时间:2022年04月17日 - 13:04

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/df5b3473/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%