我按照以下规范运行集群(每个任务管理器): -16个CPU线程 -16 GB内存 -16个插槽。 我有两个任务管理器,当我们运行图形算法(例如连接的组件)时,程序将失败,并显示以下错误:
线程“主”中的异常org.apache.flink.runtime.client.JobExecutionException:java.lang.RuntimeException:内存耗尽。压缩失败。 numPartitions:32 minPartition:29 maxPartition:30溢出段数:105 bucketSize:234总内存:42598400 Partition内存:30539776消息:null 在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) 在org.apache.flink.api.java.DataSet.collect(DataSet.java:413) 在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 Partition内存:30539776消息:null 在org.apache.flink.runtime.operators.hash.CompactingHashTable.insertRecordIntoPartition(CompactingHashTable.java:457) 在org.apache.flink.runtime.operators.hash.CompactingHashTable.insertOrReplaceRecord(CompactingHashTable.java:405) 在org.apache.flink.runtime.operators.hash.CompactingHashTable.buildTableWithUniqueKey(CompactingHashTable.java:316) 在org.apache.flink.runtime.iterative.task.IterationHeadTask.readInitialSolutionSet(IterationHeadTask.java:228) 在org.apache.flink.runtime.iterative.task.IterationHeadTask.run(IterationHeadTask.java:291) 在org.apache.flink.runtime.operators.BatchTask.invoke(BatchTask.java:368) 在org.apache.flink.runtime.taskmanager.Task.run(Task.java:703) 在java.lang.Thread.run(Thread.java:748)
我监视了堆,其利用率约为40%。我也设置了堆,但没有运气。将主内存增加到64 GB时,它将成功运行。任何帮助将不胜感激。
答案 0 :(得分:1)
您的异常表明,您用完了Flink受管内存。您可以通过taskmanager.memory.fraction控制用作托管内存的全部可用内存的比例。默认值为0.7,表示约0.7的可用堆空间(由taskmanager.heap.mb确定)用作托管内存。因此,您可以尝试增加此值。约0.3的补偿函数主要用于用户定义的函数。
我只是遇到了同样的问题,并在这里找到了原因: Gelly ran out of memory
我能够在项目中验证响应。
希望答案不迟到!