flink1.14的网络缓存消胀机制,如果只是逻辑减少buffer的大小,并物理的大小不变,这是不是会导致内存浪费?它是会改变所有的subtask的buffer大小吗?还是只有某个subtask?
Flink 1.14的网络缓存消胀机制主要是通过减少每个subtask的buffer大小来降低网络传输和内存占用。如果只是逻辑减少buffer的大小,而物理的大小不变,这可能会导致内存浪费。因为缓冲区的大小是固定的,即使减少了逻辑上的缓冲区大小,物理上的空间仍然会被占用。
在 Flink 中,网络缓存消胀机制会改变所有的 subtask 的 buffer 大小。具体来说,它会计算所有 subtask 的缓冲区大小总和,然后根据需要减少的逻辑缓冲区大小来计算新的缓冲区大小。这样,每个 subtask 的缓冲区大小都会相应地减小,从而降低网络传输和内存占用。
Flink 1.14引入的网络缓存消胀机制的主要目标是通过自动调整缓冲数据量到一个合理值,来解决因网络传输中buffer过大导致的内存浪费问题。这种机制会根据subtask的实际需求动态调整其缓冲区大小,而不仅仅是逻辑上的减少。这意味着,如果某个subtask需要更多的buffer空间,该机制会增加其缓冲区大小;反之,如果某个subtask的缓冲区使用较少,该机制则会相应地减少其缓冲区大小。
具体来说,Flink的TaskManager会定期检查每个subtask的缓冲区使用情况,并根据这些信息来调整其缓冲区大小。此外,为了确保系统的稳定性和性能,Flink还提供了一些相关的配置选项,如taskmanager.network.memory.buffer-debloat.enabled
和taskmanager.network.memory.buffer-debloat.period
,允许用户自定义缓存消胀操作的启用策略和时间周期。
总的来说,Flink 1.14的网络缓存消胀机制不仅可以有效地避免内存浪费,还可以根据实际的业务需求为每个subtask提供合适的缓冲区大小。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。