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

Flink CDC中可以拿到数据了,但是跑一段时间任务就OOM了,看了下背压很严重啊,怎么解决?

"问题1:Flink CDC中可以拿到数据了,但是跑一段时间任务就OOM了,看了下背压很严重啊,怎么解决?
3fd464ce6026f1f797e6194eef37ca9a.png
7a29f3ffba7d0f2d518a0c810e7f3f03.png
动态表是最细的表,通过动态表的一条数据在另外两个维表里最多只查出来一条数据。
问题2:p 48 -Dyarn.application.queue=default -Dtaskmanager.numberOfTaskSlots=4 -Djobmanager.memory.process.size=1024m -Dtaskmanager.memory.process.size=8096m -Dyarn.provided.lib.dirs=""hdfs://hadoop1:8020/flink/cdc/oracle""
内存给到8G了,并行度48,scan.incremental.snapshot.chunk.size我都下调到8096了还是不行。checkpoint吗?这个怎么确定是不是它的问题 ?f5117424c904458a3b47068463d49b7a.png
02334ebb20ac3eaaeacd8611a12cf574.png
基本都是这几个错"

展开
收起
十一0204 2023-07-26 07:57:47 303 0
3 条回答
写回答
取消 提交回答
  • 当你在 Flink CDC 中拿到数据后,但是任务运行一段时间后遇到内存溢出(OOM)和严重的背压问题时,可以尝试以下几种解决方法:

    1. 调整并增加资源:首先,检查任务所在的计算资源是否足够支持工作负载。考虑增加任务的堆内存、TaskManager 的数量或其它资源限制。通过调整资源配置,可以缓解背压问题并提高任务的稳定性。

    2. 优化任务逻辑:分析任务的逻辑和数据处理流程,找出可能导致背压的瓶颈。尝试优化代码,减少中间状态的存储或使用更高效的算法来降低资源消耗。确保任务的吞吐量符合预期,并且没有不必要的数据倾斜或过度计算的情况。

    3. 增加并行度:通过增加算子的并行度,将任务的负载均衡到更多的并行实例上,以提高整体吞吐量和减少背压。然而,需要注意不要盲目增加并行度,而应结合任务的资源配置和数据特征来进行合理的调整。

    4. 调整水位线设置:水位线控制着事件时间处理的进度,适当调整水位线的设置可能有助于缓解背压问题。根据业务需求和数据特点,合理设置水位线以避免任务过度阻塞。

    5. 使用异步 I/O 操作:如果任务中涉及到外部系统的读写操作,可以考虑使用异步的 I/O 操作来提高吞吐量和响应性。例如,对于与外部存储系统交互的操作,可以使用异步客户端或非阻塞的 I/O 操作代替同步的阻塞式调用。

    6. 检查是否存在资源泄露:仔细检查代码,确保没有发生资源泄露(如打开的文件句柄、数据库连接等未正确关闭),这些泄露会导致内存占用不断增加,最终引起 OOM。

    7. 升级 Flink 版本:根据你所使用的 Flink 版本,检查官方文档或社区,了解是否存在已知的背压和内存管理方面的 bug。在一些情况下,升级到新版本可能会带来性能和稳定性的改进。

    通过采取上述措施,你应该能够减轻背压问题并解决 OOM 错误。然而,具体的解决方法需要根据你的任务逻辑和配置进行调整和优化。

    希望这些解决方法对你有所帮助!如果还有其他问题,请随时提问。

    2023-07-31 23:26:38
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    Flink CDC 任务 OOM(Out of Memory)和背压(backpressure)问题通常是由于数据处理过程中出现了数据积压,导致内存占用过高,而引起的。为了解决这个问题,您可以采取以下一些措施:
    调整算子并行度:如果算子并行度设置过高,可能会导致数据积压和背压问题。可以尝试降低算子并行度,以减少数据积压并降低内存占用。
    调整窗口时间:如果窗口时间设置过长,可能会导致数据积压和背压问题。可以尝试缩短窗口时间,以减少数据积压并降低内存占用。
    增加 TaskManager 内存:如果 TaskManager 的内存不足,可能会导致 OOM 问题。可以尝试增加 TaskManager 的内存,以提高 Flink 的数据处理能力。
    使用异步 IO:如果任务的数据源和数据目标使用的是同步 IO,可能会导致数据积压和背压问题。可以尝试使用异步 IO,以减少数据积压并降低内存占用。
    启用 RocksDB 状态后端:如果任务的状态量较大,可能会导致内存占用过高。可以尝试启用 RocksDB 状态后端,以将状态存储在磁盘上,减少内存占用。
    调整 Flink 参数:如果以上措施仍然不能解决 OOM 和背压问题,可以尝试调整 Flink 的一些参数,例如内存分配比例、内存管理模式等,以优化 Flink 的内存使用。

    2023-07-29 16:51:42
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "回答1:我知道动态表,但是你开了48个并行度,oracle我记得是增量快照框架,是不是做ckp导致的问题。也就是你48个并行度数据量历史数据也挺多的。
    回答2:先测试增量数据,应该不会有这个问题,3分钟起步做一次ckp吧,太小间隔也不是很合适。此回答整理至钉群“Flink CDC 社区”。"

    2023-07-26 12:04:24
    赞同 展开评论 打赏

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

相关产品

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

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