flink cdc 中,mongo 4.2,flink 1.15.3,hudi 0.12.2, 看topology graph确实是changelogNormalize节点的问题,有没有推荐的优化方案?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 Flink CDC 中,changelogNormalize 节点通常是用来将 CDC 数据流中的数据进行规范化处理,以便更好地适配 Flink 中的数据流处理模型。如果您在使用 Flink CDC 时发现 changelogNormalize 节点存在性能问题,可以考虑以下一些优化方案:
调整并行度:在 CDC 任务中,changelogNormalize 节点的并行度通常需要根据数据流的大小和复杂度进行调整。如果并行度设置过高,可能会导致任务性能下降;如果并行度设置过低,则可能会导致任务无法充分利用集群资源。建议根据实际情况进行调整。
使用 Flink 的 Watermark 机制:在 Flink 中,Watermark 机制可以用来处理乱序数据流。如果 CDC 数据流中存在乱序数据,可以考虑使用 Flink 的 Watermark 机制来更好地处理数据流,从而提高任务的性能和稳定性。
优化代码逻辑:如果 CDC 任务中的 changelogNormalize 节点存在性能问题,可以考虑优化代码逻辑,例如减少数据复制、使用更高效的算法等。
更新 Flink、MongoDB 和 Hudi 版本:如果您的 Flink、MongoDB 或 Hudi 版本过老,可能会存在一些性能问题。建议更新到最新版本,以获取更好的性能和稳定性。
用rocksdb做状态后端,我之前同步mongo,状态也是随着数据量不断增大,最后checkpoint都不行,改成rocksdb后,开增量checkpoint就解决了。
不过如果做savepoint也会很大。SET state.backend = rocksdb;
SET state.backend.incremental = true;
加这两行就好了,此回答整理自钉群“Flink CDC 社区”
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。