我运行了一个具有以下规范的集群(每个任务管理器(:-16个cpu线程-16 GB内存-16个插槽。我有两个任务管理器,当我们运行图形算法(如连接的组件(时,程序将失败,并出现以下错误:
线程"main"org.apache.flink.runtime.client.JobExecutionException异常:java.lang.RuntimeException:内存用完。压实失败。numPartitions:32 minPartition:29 maxPartition:30溢出段数:105桶大小:234总内存:42598400分区内存: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.Datat.collect(DataSet.java:413(网址:org.apache.flink.api.java.Datat.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桶大小:234总内存:42598400分区内存: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.iiterative.task.IniterationHeadTask.readInitialSolutionSet(IterationHeadTask.java:228(网址:org.apache.flink.runtime.iiterative.task.IniterationHeadTask.run(IterationHeadTask.java:291(网址:org.apache.flink.runtime.operators.BatchTask.ioke(BatchTask.java:368(网址:org.apache.flink.runtime.taskmanager.Task.run(Task.java:703(在java.lang.Thread.run(Thread.java:748(
我监视了堆,它的利用率大约为40%。我也掀起了堆真,但没有这样的运气。当主内存增加到64GB时,它就成功运行了。如有任何帮助,我们将不胜感激。
您的异常指示您用完了Flink管理的内存。您可以通过taskmanager.memory.fraction控制用作托管内存的总可用内存的比例。默认值为0.7,意味着大约0.7的可用堆空间(由taskmanager.heap.mb确定(用作托管内存。所以,你可以尝试增加这个值。~0.3的记忆函数主要用于用户定义的函数。
我只是遇到了同样的问题,并在这里找到了理由:盖利的内存不足
我能够在我的项目中验证响应。
希望答案是不要迟到!