You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by je...@lewi.us on 2011/02/19 00:05:48 UTC
clusterdump out of memory error
Greetings,
I used kmeans to cluster ~3million instances of 40-d vectors. The
clustering ran fine but when I ran the cluster dump utility I got the
memory error below. I initially ran everything locally, but after
getting the memory error I tried running it under hadoop in pseudo
distributed mode (I'm running cloudera).
I have r1066213 of Mahout.
Java is 1.6.0_23
Jeremy
/usr/local/programs/svn_mahout/bin/mahout clusterdump --seqFileDir
kmeans_work/cluster-9 --pointsDir kmeans_work/clusteredPoints --output
kmeans_work/clusteranalyze-9.txt
Running on hadoop, using HADOOP_HOME=/usr/lib/hadoop-0.20
No HADOOP_CONF_DIR set, using /usr/lib/hadoop-0.20/conf
11/02/18 14:34:50 INFO common.AbstractJob: Command line arguments:
{--dictionaryType=text, --endPhase=2147483647,
--output=kmeans_work/clusteranalyze-9.txt,
--pointsDir=kmeans_work/clusteredPoints,
--seqFileDir=kmeans_work/cluster-9, --startPhase=0, --tempDir=temp}
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead
limit exceeded
at org.apache.mahout.math.DenseVector.<init>(DenseVector.java:44)
at org.apache.mahout.math.DenseVector.<init>(DenseVector.java:39)
at org.apache.mahout.math.VectorWritable.readFields(VectorWritable.java:94)
at
org.apache.mahout.clustering.WeightedVectorWritable.readFields(WeightedVectorWritable.java:55)
at
org.apache.hadoop.io.SequenceFile$Reader.getCurrentValue(SequenceFile.java:1758)
at org.apache.hadoop.io.SequenceFile$Reader.next(SequenceFile.java:1886)
at
org.apache.mahout.utils.clustering.ClusterDumper.readPoints(ClusterDumper.java:286)
at
org.apache.mahout.utils.clustering.ClusterDumper.init(ClusterDumper.java:224)
at
org.apache.mahout.utils.clustering.ClusterDumper.run(ClusterDumper.java:143)
at
org.apache.mahout.utils.clustering.ClusterDumper.main(ClusterDumper.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:186)
Re: clusterdump out of memory error
Posted by Jeremy Lewi <je...@lewi.us>.
If I leave out the --pointsDir option it will work. But I need to know
the cluster assignments for each point.
J
On Fri, 2011-02-18 at 16:05 -0700, jeremy@lewi.us wrote:
> Greetings,
>
> I used kmeans to cluster ~3million instances of 40-d vectors. The
> clustering ran fine but when I ran the cluster dump utility I got the
> memory error below. I initially ran everything locally, but after
> getting the memory error I tried running it under hadoop in pseudo
> distributed mode (I'm running cloudera).
>
> I have r1066213 of Mahout.
> Java is 1.6.0_23
>
>
> Jeremy
>
> /usr/local/programs/svn_mahout/bin/mahout clusterdump --seqFileDir
> kmeans_work/cluster-9 --pointsDir kmeans_work/clusteredPoints --output
> kmeans_work/clusteranalyze-9.txt
> Running on hadoop, using HADOOP_HOME=/usr/lib/hadoop-0.20
> No HADOOP_CONF_DIR set, using /usr/lib/hadoop-0.20/conf
> 11/02/18 14:34:50 INFO common.AbstractJob: Command line arguments:
> {--dictionaryType=text, --endPhase=2147483647,
> --output=kmeans_work/clusteranalyze-9.txt,
> --pointsDir=kmeans_work/clusteredPoints,
> --seqFileDir=kmeans_work/cluster-9, --startPhase=0, --tempDir=temp}
> Exception in thread "main" java.lang.OutOfMemoryError: GC overhead
> limit exceeded
> at org.apache.mahout.math.DenseVector.<init>(DenseVector.java:44)
> at org.apache.mahout.math.DenseVector.<init>(DenseVector.java:39)
> at org.apache.mahout.math.VectorWritable.readFields(VectorWritable.java:94)
> at
> org.apache.mahout.clustering.WeightedVectorWritable.readFields(WeightedVectorWritable.java:55)
> at
> org.apache.hadoop.io.SequenceFile$Reader.getCurrentValue(SequenceFile.java:1758)
> at org.apache.hadoop.io.SequenceFile$Reader.next(SequenceFile.java:1886)
> at
> org.apache.mahout.utils.clustering.ClusterDumper.readPoints(ClusterDumper.java:286)
> at
> org.apache.mahout.utils.clustering.ClusterDumper.init(ClusterDumper.java:224)
> at
> org.apache.mahout.utils.clustering.ClusterDumper.run(ClusterDumper.java:143)
> at
> org.apache.mahout.utils.clustering.ClusterDumper.main(ClusterDumper.java:104)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> 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:187)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:186)
>
>