gpt4 book ai didi

Mahout 耗尽了堆空间

转载 作者:行者123 更新时间:2023-12-04 20:54:34 24 4
gpt4 key购买 nike

我正在使用 Mahout 在一组推文上运行 NaiveBayes。两个文件,一个 100 MB,一个 300 MB。我将 JAVA_HEAP_MAX 更改为 JAVA_HEAP_MAX=-Xmx2000m (之前是 1000)。但即便如此,mahout 在它提示堆空间错误之前运行了几个小时(准确地说是 2 小时)。我该怎么做才能解决?

如果有帮助,请提供更多信息:我在单个节点上运行,我的笔记本电脑实际上有 3GB 的 RAM(仅)。

谢谢。

编辑:我第三次使用 <1/2 我第一次使用的数据运行它(第一次我使用了 550 万条推文,第二次我使用了 200 万条),但我仍然遇到了堆空间问题。为了完成目的,我发布了完整的错误:

17 May, 2011 2:16:22 PM
org.apache.hadoop.mapred.JobClient monitorAndPrintJob
INFO: map 50% reduce 0%

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:62)
at java.lang.StringBuilder.<init>(StringBuilder.java:85)
at org.apache.hadoop.mapred.JobClient.monitorAndPrintJob(JobClient.java:1283)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1251)
at org.apache.mahout.classifier.bayes.mapreduce.common.BayesFeatureDriver.runJob(BayesFeatureDriver.java:63)
at org.apache.mahout.classifier.bayes.mapreduce.bayes.BayesDriver.runJob(BayesDriver.java:44)
at org.apache.mahout.classifier.bayes.TrainClassifier.trainNaiveBayes(TrainClassifier.java:54)
at org.apache.mahout.classifier.bayes.TrainClassifier.main(TrainClassifier.java:162)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:184)
17 May, 2011 7:14:53 PM org.apache.hadoop.mapred.LocalJobRunner$Job run
WARNING: job_local_0001
java.lang.OutOfMemoryError: Java heap space
at java.lang.String.substring(String.java:1951)
at java.lang.String.subSequence(String.java:1984)
at java.util.regex.Pattern.split(Pattern.java:1019)
at java.util.regex.Pattern.split(Pattern.java:1076)
at org.apache.mahout.classifier.bayes.mapreduce.common.BayesFeatureMapper.map(BayesFeatureMapper.java:78)
at org.apache.mahout.classifier.bayes.mapreduce.common.BayesFeatureMapper.map(BayesFeatureMapper.java:46)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)

我发布了我更改的 bin/mahout 脚本部分:
原来的 :
JAVA=$JAVA_HOME/bin/java
JAVA_HEAP_MAX=-Xmx1000m

if [ "$MAHOUT_HEAPSIZE" != "" ]; then
#echo "run with heapsize $MAHOUT_HEAPSIZE"
JAVA_HEAP_MAX="-Xmx""$MAHOUT_HEAPSIZE""m"
#echo $JAVA_HEAP_MAX
fi

修改的 :
JAVA=$JAVA_HOME/bin/java
JAVA_HEAP_MAX=-Xmx2000m


if [ "$MAHOUT_HEAPSIZE" != "" ]; then
#echo "run with heapsize $MAHOUT_HEAPSIZE"
JAVA_HEAP_MAX="-Xmx""$MAHOUT_HEAPSIZE""m"
#echo $JAVA_HEAP_MAX
fi

最佳答案

您没有指定哪个进程内存不足,这很重要。您需要设置MAHOUT_HEAPSIZE ,不是什么JAVA_HEAP_MAX是。

关于Mahout 耗尽了堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com