Flink CDC问一下flinksql 读取kafka 和 flinksql mongodb-cdc
为啥cdc会把taskmanager的Managed Memory占满?而读取kafka的是0
CDC(Change Data Capture)是一种用于捕获数据库中数据变更的技术。当使用Flink CDC时,它会将源数据库中的变更事件读取出来,并将其转换为流式数据进行处理。
在处理过程中,Flink CDC会将读取到的变更事件存储在TaskManager的Managed Memory中。这是因为Flink CDC需要对每个变更事件进行一些额外的处理,例如解析、转换和验证等操作。这些操作需要占用一定的内存空间,因此会导致TaskManager的Managed Memory被占满。
而读取Kafka的数据并不会占用大量的Managed Memory,因为Kafka是一个分布式消息队列系统,它的消息是以二进制形式存储在Broker上的。当使用Flink SQL读取Kafka数据时,Flink会将消息反序列化为Java对象,并进行一些处理操作。由于Kafka的消息是分布式存储的,因此读取Kafka数据的内存消耗相对较小。
对于MongoDB CDC,同样也会占用一定的Managed Memory。因为MongoDB是一个文档型数据库,它的数据是以BSON格式存储在磁盘上的。当使用Flink SQL读取MongoDB CDC数据时,Flink会将BSON格式的数据反序列化为Java对象,并进行一些处理操作。由于MongoDB的数据是存储在磁盘上的,因此读取MongoDB CDC数据的内存消耗相对较大。
Flink CDC 读取 Kafka 和 MongoDB 的 Managed Memory 使用情况不同,这可能是由于以下原因:
Kafka 消费:
MongoDB CDC 消费:
Managed Memory 调整:
优化策略:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。