开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC1.13.6读取binlog是按照row读取还是按照事务的粒度读取的?

Flink CDC1.13.6读取binlog是按照row读取还是按照事务的粒度读取的?我理解是应该是这个大事务一次性处理了5千万数据,而flink的内存撑不下,导致读取事务数据一次性打爆了

展开
收起
真的很搞笑 2023-11-07 19:47:19 94 0
1 条回答
写回答
取消 提交回答
  • Flink CDC 是按照事务的粒度读取 binlog 的。在 Flink CDC 中,每个事务都会被转换成一系列的 Change Records,每个 Change Record 对应一行数据的变化。当一个事务提交时,所有的 Change Records 就会被一起发送出去,形成一个事务事件流。这样做的好处是可以保持数据的一致性和完整性。
    然而,当事务涉及的数据量太大时,可能导致 Flink 内存不足,从而引发 OutOfMemoryError 错误。为了避免这种情况发生,可以考虑以下几个解决方案:

    1. 增加 Flink 内存分配:增加 Flink 执行时分配给 TaskManager 的内存,以便能够容纳更大的事务数据量。
    2. 设置 maxBatchSize 参数:可以通过调整 maxBatchSize 参数限制单次发送的数据量,避免过大的事务被打包成单个消息发送出去。
    3. 使用流处理模式而不是批处理模式:在流处理模式下,Flink 可以持续地处理事务,而不是一次性接收全部数据。这样可以有效减轻内存压力,并且能够在遇到大事务时避免 OutOfMemoryError 错误。
    4. 建立缓冲区来拆解大型事务:如果仍然无法避免大事务,那么可以建立一个缓冲区来拆解大型事务,并将其分割成若干个小事务发送出去。这种方法需要额外的编程和设计,但是在处理大数据量时具有更高的灵活性。
    2023-11-09 15:45:30
    赞同 2 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载