Flink Gelly Memory耗尽了

时间:2018-07-25 11:16:10

标签: apache-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 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时,它将成功运行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的异常表明,您用完了Flink受管内存。您可以通过taskmanager.memory.fraction控制用作托管内存的全部可用内存的比例。默认值为0.7,表示约0.7的可用堆空间(由taskmanager.heap.mb确定)用作托管内存。因此,您可以尝试增加此值。约0.3的补偿函数主要用于用户定义的函数。

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

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

希望答案不迟到!