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

有个flink SQL的内存溢出的问题,怎么解决?

有个flink SQL的内存溢出的问题,怎么解决?我在 explain 一条比较复杂的SQL报oom,

flink版本:1.17.1
execution.runtime-mode=batch;

SQL中大约10张Iceberg表,约30次left Join操作

jobmanager.memory.process.size 是 5g,报错提示增加jobmanager.memory.heap.size但是增加到30g后也无效

错误日志
Caused by: java. lang. OutfMemoryError: Java heap space. A heap space-related out-of-memory error has occurred. This can mean two things: either Flink Master requires a larger size of JVM heap space or there is a memory leak. In the first case,
"jobmanager memory. heap.size can be used to increase the
amount of available heap memory. If the problem is not resolved by increasing the heap size, it indicates a memory leak in the user code or its dependencies which needs to be investigated and fixed. The Flink Master has to be shutdown...
lADPM5HimMlj8dnNBDjNB4A_1920_1080.jpg
lADPM5HimMlj8dnNBDjNB4A_1920_1080.jpg

展开
收起
三分钟热度的鱼 2023-08-22 20:50:01 297 0
1 条回答
写回答
取消 提交回答
  • Flink SQL 内存溢出的问题有很多种可能原因,具体原因需要根据实际情况具体分析。以下是一些常见原因:

    输入数据量太大。如果输入数据量太大,Flink SQL 就需要分配更多的内存来存储数据,如果内存不足,就会发生内存溢出。
    算子使用的内存太多。Flink SQL 中的某些算子(例如 JOIN、GROUP BY 等)可能会使用大量的内存。如果这些算子使用太多内存,也会导致内存溢出。
    数据格式不正确。如果数据格式不正确,Flink SQL 就需要花费更多的时间来解析数据,这也会导致内存溢出。
    要解决 Flink SQL 内存溢出的问题,可以尝试以下方法:

    减少输入数据量。如果输入数据量太大,可以尝试减少数据量,或者使用分区方式来读取数据。
    使用更小的内存算子替换大的内存算子。如果某些算子使用太多内存,可以尝试使用更小的内存算子来替换它们。
    调整数据格式。如果数据格式不正确,可以尝试调整数据格式,使其更容易解析。
    如果以上方法都不能解决问题,可以尝试联系 Flink 官方支持团队寻求帮助。

    2023-09-18 16:38:51
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    内存取证与IaaS云平台恶意行 为的安全监控 立即下载
    云服务器ECS内存增强型实例re6全新发布 立即下载