FLINK原理与实现-内存管理

本文详细介绍了Flink的内存管理机制,包括TaskManager的内存划分、内存管理如何减少GC压力和避免OOM,以及Flink如何通过直接操作二进制数据优化性能。此外,还探讨了Flink定制序列化框架的原因和缓存友好的数据结构。最后提到了走向堆外内存的优点和挑战。
摘要由CSDN通过智能技术生成

背景介绍

一句话来介绍 Flink 就是 “Stateful Computations Over Streams”。四个基石:Checkpoint、State、Time、Window。

  • Checkpoint 机制,Flink 基于 Chandy-Lamport 算法实现了分布式一致性的快照,从而提供了 exactly-once 的语义。(Flink 基于两阶段提交协议,实现了端到端的 exactly-once 语义保证。内置支持了 Kafka 的端到端保证,并提供了 TwoPhaseCommitSinkFunction 供用于实现自定义外部存储的端到端 exactly-once 保证。)
  • state有状态计算:支持大状态、灵活的状态后端
  • Flink 还实现了 watermark 的机制,解决了基于事件时间处理时的数据乱序和数据迟到的问题。
  • Window:提供了一套开箱即用的窗口操作,如滚动窗口、滑动窗口、会话窗口,支持非常灵活的自定义窗口满足特殊业务需求。
  • 带反压的流模型
  • 基于jvm实现独立的内存管理:可超出主内存的大小限制、承受更少的垃圾回收开销、对象序列化二进制存储。

Flink内存管理

基于JVM的数据分析引擎都需要面对将大量数据存到内存当中,就不得不面对JVM存在的几个问题:
JVM存在的问题

  • java对象存储密度低:比如一个只包含boolean属性的对象占用16个字节,对象头占用8个,boolean属性占1个,对齐填充占了7个,实际上只需要一个bit(1/8字节)就够了他。

  • Full GC会极大的影响性能,尤其是为了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

house.zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值