首页 > 解决方案 > Flink Gelly 内存耗尽

问题描述

我运行具有以下规格的集群(每个任务管理器): - 16 个 CPU 线程 - 16 GB 内存 - 16 个插槽。我有两个任务管理器,当我们运行连接组件等图形算法时,程序将失败并出现以下错误:

线程“主”org.apache.flink.runtime.client.JobExecutionException 中的异常:java.lang.RuntimeException:内存用完。压缩失败。numPartitions:32 minPartition:29 maxPartition:30 溢出段数:105 bucketSize:234 总内存:42598400 分区内存:30539776 消息:org.apache.flink.runtime.minicluster.MiniCluster.executeJobBlocking(MiniCluster.java:625)处为空在 org.apache.flink.client.LocalExecutor.executePlan(LocalExecutor.java:234) 在 org.apache.flink.api.java.LocalEnvironment.execute(LocalEnvironment.java:91) 在 org.apache.flink.api.java .ExecutionEnvironment.execute(ExecutionEnvironment.java:816) at org.apache.flink.api.java.DataSet.collect(DataSet.java:413) at org.apache.flink.api.java.DataSet.print(DataSet.java :1652) 在 com.asha.adw.ga.gpe.main。Main.main(Main.java:207) 引起:java.lang.RuntimeException:内存用完。压缩失败。numPartitions:32 minPartition:29 maxPartition:30 溢出段数:105 bucketSize:234 总内存:42598400 分区内存:30539776 消息:org.apache.flink.runtime.operators.hash.CompactingHashTable.insertRecordIntoPartition(CompactingHashTable.java: 457)在org.apache.flink.runtime.operators.hash.CompactingHashTable.buildTableWithUniqueKey(CompactingHashTable.java:316)在org.apache.flink. .apache.flink.runtime.iterative.task.IterationHeadTask.readInitialSolutionSet(IterationHeadTask.java:228) 在 org.apache.flink.runtime.iterative.task.IterationHeadTask.run(IterationHeadTask.java:

我监控了堆,它的利用率约为 40%。我也设置了off-heap true,但是没有这样的运气。当将主内存增加到 64 GB 时,它成功运行。任何帮助将不胜感激。

标签: apache-flinkgelly

解决方案


您的异常表明您用完了 Flink 托管内存。您可以通过 taskmanager.memory.fraction 控制用作托管内存的总可用内存的比例。默认值为 0.7,这意味着大约 0.7 的可用堆空间(由 taskmanager.heap.mb 确定)用作托管内存。因此,您可以尝试增加此值。~0.3 的remeiing frction 主要用于用户定义的函数。

我只是遇到了同样的问题,在这里找到了原因: Gelly run out of memory

我能够在我的项目中验证响应。

希望答案还不算晚!


推荐阅读