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

flink cdc 导致GC超时 tm 心跳丢失 这个问题有处理办法么 ?

有大佬自定义过ScanTableSource,如果让其只支持批处理模式。我的上游是一个api接口。现在启动报了一个错?:Querying an unbounded table 'default_catalog.default_database.test1' in batch mode is not allowed. The table source is unbounded
43d8a8967ad91211ea9bff54a83c1826.png
source读取很快就把堆占满了 导致GC超时 tm 心跳丢失 这个问题有处理办法么 ?

展开
收起
真的很搞笑 2024-06-16 16:47:01 107 0
7 条回答
写回答
取消 提交回答
  • 关于自定义ScanTableSource以支持批处理模式,若要使其仅支持批处理模式,您可以重写isBounded()方法返回true,并确保scan()方法返回一个BatchTableSource实例而不是StreamTableSource。这样,Flink将能正确识别该表源为批处理模式,遇到的“Querying an unbounded table in batch mode is not allowed”错误,这表明尝试在批处理作业中查询一个不支持批处理的流式表源。要解决这个问题,您需要确保您的表源是有界的,并且正确实现了批处理模式所需的方法和返回类型,还有有Flink的批处理模式专注于处理有界数据集,并且重点在于提供高吞吐量的数据处理。在这种模式下,作业通常由多个阶段组成,这些阶段可以并行执行以提高资源利用率。而流处理作业则需要预先分配所有资源,以确保所有子任务能够同时部署并运行
    image.png

    参考文档

    2024-08-05 22:33:52
    赞同 展开评论 打赏
  • 根据你提供的信息似乎你的ScanTableSource正在返回一个无限流(unbounded stream),这导致了错误:"Querying an unbounded table 'default_catalog.default_database.test1' in batch mode is not allowed. The table source is unbounded."要解决这个问题,请确保你的ScanTableSource实现正确地限制了数据量或时间范围,以使其成为有限的(bounded)数据源。你可以通过以下方式来做到这一点:

    限制查询结果的数量:
    确保你的API接口有一个参数可以用来限制返回的结果数量。然后,在你的ScanTableSource实现中使用这个参数来限制结果的数量。
    基于时间范围进行限制:
    如果你的API接口是基于时间戳进行查询的,那么请确保你的ScanTableSource实现能够接受一个时间范围作为输入,并将此范围传递给API请求。
    分页处理:
    如果你的API接口不提供直接的限制方法,你可以考虑使用分页机制。每次调用API时,只获取一定数量的结果,然后在下一次迭代中继续获取剩余的结果,直到达到预期的限制。

    2024-07-24 16:20:41
    赞同 展开评论 打赏
  • 阿里云大降价~

    检查JobManager(JM)和TaskManager(TM)的内存配置是否充足。频繁的GC活动可能是由于内存不足导致的。如存在高频GC或长时间GC问题,建议增加JM和TM的内存配置
    image.png


    参考文档

    2024-07-24 11:55:28
    赞同 展开评论 打赏
  • Querying an unbounded table 'default_catalog.default_database.test1' in batch mode is not allowed 错误,因为 Flink CDC 连接器默认处理的是无界流数据,而查询尝试在批处理模式下执行,这是不兼容的。可以尝试切换到流模式处理。
    image.png

    ——参考链接

    2024-07-22 08:08:49
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    TaskManager 设置了合适的内存大小。可以通过 -Xmx 和 -Xms 参数设置 JVM 堆内存。
    可以通过调整 JVM 的 GC 参数来优化垃圾收集性能,例如使用 G1 垃圾收集器并调整相关参数:
    -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=32M

    检查 ScanTableSource 是否有优化空间,比如限制每次读取的数据量。

    2024-07-21 20:49:03
    赞同 展开评论 打赏
  • TM心跳丢失:TM(Task Manager)心跳丢失意味着任务管理器与任务节点之间的通信中断,可能导致任务无法正常执行或数据同步出现问题。解决此问题的方法可能包括检查网络连接,确保消息队列的正常运行,或者调整心跳间隔和重试机制

    2024-07-20 14:05:56
    赞同 展开评论 打赏
  • 您提到的Flink CDC(Change Data Capture)导致GC超时、TM心跳丢失以及自定义ScanTableSource相关问题,可能是指在Flink生态系统中的一些特定场景或配置问题。以下是对这些问题的简要分析和可能的解决方法:

    1. GC超时和TM心跳丢失:
      • GC超时:这通常是由于垃圾收集器没有足够的时间来清理内存,导致程序运行速度变慢或停止响应。解决此问题的方法可能包括调整JVM参数(如-Xms, -Xmx, -XX:+UseAdaptiveSizePolicy等),优化代码以减少内存使用,或者使用更高效的垃圾收集器策略。
      • TM心跳丢失:TM(Task Manager)心跳丢失意味着任务管理器与任务节点之间的通信中断,可能导致任务无法正常执行或数据同步出现问题。解决此问题的方法可能包括检查网络连接,确保消息队列的正常运行,或者调整心跳间隔和重试机制。
    2. 自定义ScanTableSource只支持批处理模式:
      • ScanTableSource:这是一个用于从关系型数据库读取数据的源组件,它通常支持实时和批量两种模式。如果您需要只支持批量模式,那么您可以对ScanTableSource进行定制或扩展,使其仅在特定条件下才支持实时模式。
    2024-07-20 14:05:56
    赞同 展开评论 打赏
滑动查看更多

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

相关产品

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

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