You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by Paul Ingles <pa...@oobaloo.co.uk> on 2009/07/15 23:08:59 UTC

ClassNotFoundException with pseudo/distributed run of KMeans

Hi,

Apologies for the cross-posting (I also sent this to the Hadoop user  
list) but I'm still getting errors if I try and run the KMeans  
examples on a cluster, whether that be my single-node Mac Pro, or our  
cluster. I've attached the stack trace at the bottom of the email.

The gson jar is definitely included in the packaged .job, and is also  
in the temporary directory when the task tracker picks up the work.  
The gson jar also includes TypeToken.class in the expected path.

Again, really appreciate people's help in getting this going!

----snip----
09/07/15 17:06:38 INFO mapred.JobClient: Task Id :  
attempt_200907151617_0010_m_000000_0, Status : FAILED
java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 
124)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
	at  
org 
.apache 
.mahout.matrix.AbstractVector.asFormatString(AbstractVector.java:374)
	at  
org 
.apache 
.mahout 
.clustering.kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:198)
	at  
org 
.apache 
.mahout 
.clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:39)
	at  
org 
.apache 
.mahout 
.clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:32)
	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:356)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
	at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.lang.ClassNotFoundException:  
com.google.gson.reflect.TypeToken
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
	... 20 more
----snip----

Incidentally, as part of this work I've also implemented a Pearson  
distance measure, if people think it would be useful to be folded in  
I'd be happy to get the SVN patch with tests and implementation  
together.

Thanks,
Paul

Re: ClassNotFoundException with pseudo/distributed run of KMeans

Posted by Adil Aijaz <ad...@yahoo-inc.com>.
try hadoop --config <hod-cluster-dir> jar -libjars <path to gson.jar> 
<your job/jar file> <your class> <arguments>

Adil

Paul Ingles wrote:
> Hi,
>
> Apologies for the cross-posting (I also sent this to the Hadoop user 
> list) but I'm still getting errors if I try and run the KMeans 
> examples on a cluster, whether that be my single-node Mac Pro, or our 
> cluster. I've attached the stack trace at the bottom of the email.
>
> The gson jar is definitely included in the packaged .job, and is also 
> in the temporary directory when the task tracker picks up the work. 
> The gson jar also includes TypeToken.class in the expected path.
>
> Again, really appreciate people's help in getting this going!
>
> ----snip----
> 09/07/15 17:06:38 INFO mapred.JobClient: Task Id : 
> attempt_200907151617_0010_m_000000_0, Status : FAILED
> java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
>     at java.lang.ClassLoader.defineClass1(Native Method)
>     at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>     at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>     at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>     at 
> org.apache.mahout.matrix.AbstractVector.asFormatString(AbstractVector.java:374) 
>
>     at 
> org.apache.mahout.clustering.kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:198) 
>
>     at 
> org.apache.mahout.clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:39) 
>
>     at 
> org.apache.mahout.clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:32) 
>
>     at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>     at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:356)
>     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>     at org.apache.hadoop.mapred.Child.main(Child.java:170)
> Caused by: java.lang.ClassNotFoundException: 
> com.google.gson.reflect.TypeToken
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>     ... 20 more
> ----snip----
>
> Incidentally, as part of this work I've also implemented a Pearson 
> distance measure, if people think it would be useful to be folded in 
> I'd be happy to get the SVN patch with tests and implementation together.
>
> Thanks,
> Paul


Re: ClassNotFoundException with pseudo/distributed run of KMeans

Posted by tigertail <ty...@yahoo.com>.
Thanks, Grant! I can go through kmean example now. Post the commands I used
for other guys like me who are a jar/job newbie.

jar -xf mahout-examples-0.2-SNAPSHOT.job
cd lib
for file in ./*.jar; do jar -xf $file; done
cp -r * ..
cd ..
rm -rf lib
jar -cf mahout-examples-0.2-SNAPSHOT.job


Grant Ingersoll-6 wrote:
> 
> Flatten the job just means to put all the Java class files in a single  
> JAR.  A JOB file is made up of a other JAR files, so you would unjar  
> the JOB file, then unjar all the JAR files in there, then JAR them all  
> back up into one big happy JAR file.
> 
> On Aug 3, 2009, at 2:33 PM, tigertail wrote:
> 
>>
>> Got to ask this again.
>>
>> I installed and started Hadoop-0.20.0 on a cluster with two boxes  
>> properly.
>> Then I just follow the steps Paul gave to install mahout on the  
>> master node.
>> After that i can run canopy with no problem. But I cannot run  
>> kmeans. There
>> is always the error java.lang.NoClassDefFoundError:
>> com/google/gson/reflect/TypeToken.
>>
>> Can Paul, or Grant, help me out this please, thanks!
>>
>>
>> tigertail wrote:
>>>
>>> Hi Paul,
>>>
>>> Sorry for the naive question, can you show me how to "flatten the  
>>> JOB with
>>> all classes in the same JAR"? And has this error been fixed in the  
>>> new SVN
>>> version?
>>>
>>>
>>> Paul Ingles-4 wrote:
>>>>
>>>> I've flattened the JOB with all classes in the same JAR and that  
>>>> works
>>>> successfully.
>>>>
>>>> Steps:
>>>>
>>>> 1) svn co http://svn.apache.org/repos/asf/lucene/mahout/trunk  
>>>> mahout-
>>>> trunk
>>>> 2) cd mahout-trunk
>>>> 3) mvn install
>>>> 4) hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars
>>>> examples/target/dependency/gson-1.3.jar
>>>>
>>>> As for setting up Hadoop in pseudo-distributed, that was done
>>>> following the guide on the site but I'll check that again if it's  
>>>> been
>>>> updated recently.
>>>>
>>>> Thanks again for all the help,
>>>> Paul
>>>>
>>>> On 17 Jul 2009, at 13:39, Grant Ingersoll wrote:
>>>>
>>>>> Have you tried flattening the JOB so all the classes are packed  
>>>>> in a
>>>>> single JAR?  Also, can you give the full list of steps you are
>>>>> doing, because I am able to run this in pseudo-distro without
>>>>> getting this error.  Also, have you checked the Hadoop logs  
>>>>> ($HADOOP/
>>>>> logs, I believe)
>>>>>
>>>>> I also notice that the Hadoop quick start has different
>>>>> configuration settings now due to 0.20
>>>>>
>>>>> -Grant
>>>>>
>>>>> On Jul 17, 2009, at 5:00 AM, Paul Ingles wrote:
>>>>>
>>>>>> I've tried re-running specifically adding the gson jar as follows:
>>>>>>
>>>>>> $ hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars
>>>>>> examples/target/dependency/gson-1.3.jar
>>>>>>
>>>>>> Unfortunately, I get the same errors as before:
>>>>>>
>>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Clustering
>>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Running Clustering
>>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Input: output/data
>>>>>> Clusters In: output/clusters-4 Out: output/points Distance:
>>>>>> org.apache.mahout.utils.EuclideanDistanceMeasure
>>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: convergence: 0.5 Input
>>>>>> Vectors: org.apache.mahout.matrix.SparseVector
>>>>>> 09/07/17 09:53:50 WARN mapred.JobClient: Use GenericOptionsParser
>>>>>> for parsing the arguments. Applications should implement Tool for
>>>>>> the same.
>>>>>> 09/07/17 09:53:50 INFO mapred.FileInputFormat: Total input paths  
>>>>>> to
>>>>>> process : 2
>>>>>> 09/07/17 09:53:51 INFO mapred.JobClient: Running job:
>>>>>> job_200907161209_0018
>>>>>> 09/07/17 09:53:52 INFO mapred.JobClient:  map 0% reduce 0%
>>>>>> 09/07/17 09:54:06 INFO mapred.JobClient: Task Id :
>>>>>> attempt_200907161209_0018_m_000000_0, Status : FAILED
>>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
>>>>>> 	at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>>>>> 	at
>>>>>> java 
>>>>>> .security.SecureClassLoader.defineClass(SecureClassLoader.java:
>>>>>> 124)
>>>>>> 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>>>>>> 	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>>>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>>>> 	at
>>>>>> org
>>>>>> .apache
>>>>>> .mahout.matrix.AbstractVector.asFormatString(AbstractVector.java: 
>>>>>> 374)
>>>>>> 	at
>>>>>> org
>>>>>> .apache
>>>>>> .mahout
>>>>>> .clustering 
>>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:
>>>>>> 198)
>>>>>> 	at
>>>>>> org
>>>>>> .apache
>>>>>> .mahout
>>>>>> .clustering 
>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:
>>>>>> 39)
>>>>>> 	at
>>>>>> org
>>>>>> .apache
>>>>>> .mahout
>>>>>> .clustering 
>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:
>>>>>> 32)
>>>>>> 	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>>> 	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>>> 356)
>>>>>> 	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>> 	at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>> com.google.gson.reflect.TypeToken
>>>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>>>> 	... 20 more
>>>>>>
>>>>>> This is running pseudo-distributed on my laptop.
>>>>>>
>>>>>> On 16 Jul 2009, at 18:57, Adil Aijaz wrote:
>>>>>>
>>>>>>> My basic understanding of the class loader stuff is:
>>>>>>>
>>>>>>> 1. Any jars that need to be available to map/reduce jobs should  
>>>>>>> be
>>>>>>> specified through -libjars  (e.g hadoop --config ... -libjars
>>>>>>> gson.jar jar <path to my jar> ...)
>>>>>>> 2. Any jars that need to be available to the main class should be
>>>>>>> specified through lib/*.jar (that is in the mahout-examples-0.2-
>>>>>>> SNAPSHOT/lib/*.jar)
>>>>>>>
>>>>>>> unless of course as Jeff is saying one ends up flattening the  
>>>>>>> lib/
>>>>>>> *.jar into top level classes.
>>>>>>>
>>>>>>> Adil
>>>>>>>
>>>>>>> Jeff Eastman wrote:
>>>>>>>> Isn't this the same old problem that our Job jar file has a lib
>>>>>>>> directory with the Mahout code in it and the way Hadoop loads  
>>>>>>>> the
>>>>>>>> jar it sometimes cannot resolve classes in it? IIRC, one needs  
>>>>>>>> to
>>>>>>>> smash the job jar file into a single jar in order for Dirichlet
>>>>>>>> (at least, and any other examples which contain non-core
>>>>>>>> classes). I confess I do not understand the class loader stuff
>>>>>>>> enough to be more specific.
>>>>>>>>
>>>>>>>> I have duplicated the CNF exception by defining and using a  
>>>>>>>> user-
>>>>>>>> defined distance measure in the Job file and running KMeans with
>>>>>>>> it, so it is not specific to Dirichlet.
>>>>>>>>
>>>>>>>>
>>>>>>>> classes
>>>>>>>> Grant Ingersoll wrote:
>>>>>>>>> Hmm, I'm not seeing the ClassNotFound problem but am getting
>>>>>>>>> fetch failures.  Will look later.
>>>>>>>>>
>>>>>>>>> -Grant
>>>>>>>>>
>>>>>>>>> On Jul 16, 2009, at 11:32 AM, Paul Ingles wrote:
>>>>>>>>>
>>>>>>>>>> I've just tried setting a brand new machine (Ubuntu 8.04
>>>>>>>>>> Virtual Machine) with Hadoop 0.20.0 and running the compile
>>>>>>>>>> jobs against it. I get the same problems as before... still
>>>>>>>>>> scratching my head :(
>>>>>>>>>>
>>>>>>>>>> On 16 Jul 2009, at 12:15, Paul Ingles wrote:
>>>>>>>>>>
>>>>>>>>>>> Sure,
>>>>>>>>>>>
>>>>>>>>>>> I'm running (currently) on my MacBook Air, running OSX  
>>>>>>>>>>> Leopard.
>>>>>>>>>>>
>>>>>>>>>>> JDK: java version "1.6.0_13"
>>>>>>>>>>> Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
>>>>>>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed
>>>>>>>>>>> mode)
>>>>>>>>>>>
>>>>>>>>>>> Hadoop is: 0.20.0, r763504
>>>>>>>>>>>
>>>>>>>>>>> I'm compiling mahout from trunk (r794023) as follows (in the
>>>>>>>>>>> root of the project directory):
>>>>>>>>>>>
>>>>>>>>>>> % mvn install
>>>>>>>>>>> % hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>>>>>>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
>>>>>>>>>>>
>>>>>>>>>>> The only difference (for dirichlet) is the different class to
>>>>>>>>>>> run.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Paul
>>>>>>>>>>>
>>>>>>>>>>> On 16 Jul 2009, at 11:33, Grant Ingersoll wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Can you share how you built and how you are running, as in
>>>>>>>>>>>> command line options, etc.?  Also, JDK version, Hadoop
>>>>>>>>>>>> version, etc.
>>>>>>>>>>>>
>>>>>>>>>>>> On Jul 16, 2009, at 6:21 AM, Paul Ingles wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thank you for the suggestion. Unfortunately, when I tried
>>>>>>>>>>>>> that I received the same error. I've also tried copying the
>>>>>>>>>>>>> gson jar directly into $HADOOP_HOME/lib (when I was running
>>>>>>>>>>>>> a single node pseudo-distributed) and get the same error
>>>>>>>>>>>>> still.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Weirdly enough, if I try and run the Dirichlet example on
>>>>>>>>>>>>> the cluster I receive another ClassNotFoundException:
>>>>>>>>>>>>>
>>>>>>>>>>>>> 09/07/16 10:27:54 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>>> attempt_200907161026_0002_m_000001_0, Status : FAILED
>>>>>>>>>>>>> java.lang.RuntimeException: Error in configuring object
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop 
>>>>>>>>>>>>> .util.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>>> 93)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java: 
>>>>>>>>>>>>> 64)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop
>>>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:
>>>>>>>>>>>>> 352)
>>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>>> 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.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>>> 88)
>>>>>>>>>>>>> ... 5 more
>>>>>>>>>>>>> Caused by: java.lang.RuntimeException: Error in configuring
>>>>>>>>>>>>> object
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop 
>>>>>>>>>>>>> .util.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>>> 93)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java: 
>>>>>>>>>>>>> 64)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .hadoop
>>>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org 
>>>>>>>>>>>>> .apache.hadoop.mapred.MapRunner.configure(MapRunner.java:
>>>>>>>>>>>>> 34)
>>>>>>>>>>>>> ... 10 more
>>>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>>> 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.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>>> 88)
>>>>>>>>>>>>> ... 13 more
>>>>>>>>>>>>> Caused by: java.lang.RuntimeException:
>>>>>>>>>>>>> java.lang.ClassNotFoundException:
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .dirichlet
>>>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:95)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .dirichlet.DirichletMapper.configure(DirichletMapper.java: 
>>>>>>>>>>>>> 60)
>>>>>>>>>>>>> ... 18 more
>>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>>> Method)
>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>>> 188)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
>>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:
>>>>>>>>>>>>> 288)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .dirichlet 
>>>>>>>>>>>>> .DirichletDriver.createState(DirichletDriver.java:
>>>>>>>>>>>>> 121)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org
>>>>>>>>>>>>> .apache
>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>> .dirichlet
>>>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:71)
>>>>>>>>>>>>> ... 19 more
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hoping this sparks some other suggestions :)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Paul
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed Jul 15 22:08:09 UTC 2009, Adil Aijaz
>>>>>>>>>>>>> <adil@yahoo-inc.com
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> try hadoop --config <hod-cluster-dir> jar -libjars <path  
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> gson.jar>
>>>>>>>>>>>>>> <your job/jar file> <your class> <arguments>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Adil
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Paul Ingles wrote:
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Apologies for the cross-posting (I also sent this to the
>>>>>>>>>>>>>>> Hadoop user
>>>>>>>>>>>>>>> list) but I'm still getting errors if I try and run the
>>>>>>>>>>>>>>> KMeans
>>>>>>>>>>>>>>> examples on a cluster, whether that be my single-node Mac
>>>>>>>>>>>>>>> Pro, or our
>>>>>>>>>>>>>>> cluster. I've attached the stack trace at the bottom of
>>>>>>>>>>>>>>> the email.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The gson jar is definitely included in the packaged .job,
>>>>>>>>>>>>>>> and is also
>>>>>>>>>>>>>>> in the temporary directory when the task tracker picks up
>>>>>>>>>>>>>>> the work.
>>>>>>>>>>>>>>> The gson jar also includes TypeToken.class in the  
>>>>>>>>>>>>>>> expected
>>>>>>>>>>>>>>> path.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Again, really appreciate people's help in getting this
>>>>>>>>>>>>>>> going!
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>>>> 09/07/15 17:06:38 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>>>>> attempt_200907151617_0010_m_000000_0, Status : FAILED
>>>>>>>>>>>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/
>>>>>>>>>>>>>>> TypeToken
>>>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java: 
>>>>>>>>>>>>>>> 703)
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> java
>>>>>>>>>>>>>>> .security
>>>>>>>>>>>>>>> .SecureClassLoader.defineClass(SecureClassLoader.java: 
>>>>>>>>>>>>>>> 124)
>>>>>>>>>>>>>>> at  
>>>>>>>>>>>>>>> java.net.URLClassLoader.defineClass(URLClassLoader.java:
>>>>>>>>>>>>>>> 260)
>>>>>>>>>>>>>>> at java.net.URLClassLoader.access 
>>>>>>>>>>>>>>> $000(URLClassLoader.java:
>>>>>>>>>>>>>>> 56)
>>>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native
>>>>>>>>>>>>>>> Method)
>>>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:
>>>>>>>>>>>>>>> 188)
>>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>>>> at sun.misc.Launcher
>>>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
>>>>>>>>>>>>>>> 402)
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> org
>>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>>> .matrix 
>>>>>>>>>>>>>>> .AbstractVector.asFormatString(AbstractVector.java:
>>>>>>>>>>>>>>> 374)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> org
>>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java: 
>>>>>>>>>>>>>>> 198)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> org
>>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>>> .kmeans 
>>>>>>>>>>>>>>> .KMeansClusterMapper.map(KMeansClusterMapper.java:39)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> org
>>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>>> .kmeans 
>>>>>>>>>>>>>>> .KMeansClusterMapper.map(KMeansClusterMapper.java:32)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> at  
>>>>>>>>>>>>>>> org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> org 
>>>>>>>>>>>>>>> .apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:
>>>>>>>>>>>>>>> 356)
>>>>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>>>>> com.google.gson.reflect.TypeToken
>>>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native
>>>>>>>>>>>>>>> Method)
>>>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:
>>>>>>>>>>>>>>> 188)
>>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>>>> at sun.misc.Launcher
>>>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>>>> at
>>>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
>>>>>>>>>>>>>>> 402)
>>>>>>>>>>>>>>> ... 20 more
>>>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Incidentally, as part of this work I've also  
>>>>>>>>>>>>>>> implemented a
>>>>>>>>>>>>>>> Pearson
>>>>>>>>>>>>>>> distance measure, if people think it would be useful to  
>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>> folded in
>>>>>>>>>>>>>>> I'd be happy to get the SVN patch with tests and
>>>>>>>>>>>>>>> implementation together.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>> Paul
>>>>>>>>>>>>
>>>>>>>>>>>> --------------------------
>>>>>>>>>>>> Grant Ingersoll
>>>>>>>>>>>> http://www.lucidimagination.com/
>>>>>>>>>>>>
>>>>>>>>>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/
>>>>>>>>>>>> Droids) using Solr/Lucene:
>>>>>>>>>>>> http://www.lucidimagination.com/search
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> --------------------------
>>>>> Grant Ingersoll
>>>>> http://www.lucidimagination.com/
>>>>>
>>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)
>>>>> using Solr/Lucene:
>>>>> http://www.lucidimagination.com/search
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/ClassNotFoundException-with-pseudo-distributed-run-of-KMeans-tp24505889p24795839.html
>> Sent from the Mahout User List mailing list archive at Nabble.com.
>>
> 
> --------------------------
> Grant Ingersoll
> http://www.lucidimagination.com/
> 
> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)  
> using Solr/Lucene:
> http://www.lucidimagination.com/search
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ClassNotFoundException-with-pseudo-distributed-run-of-KMeans-tp24505889p24798517.html
Sent from the Mahout User List mailing list archive at Nabble.com.


Re: ClassNotFoundException with pseudo/distributed run of KMeans

Posted by Grant Ingersoll <gs...@apache.org>.
Flatten the job just means to put all the Java class files in a single  
JAR.  A JOB file is made up of a other JAR files, so you would unjar  
the JOB file, then unjar all the JAR files in there, then JAR them all  
back up into one big happy JAR file.

On Aug 3, 2009, at 2:33 PM, tigertail wrote:

>
> Got to ask this again.
>
> I installed and started Hadoop-0.20.0 on a cluster with two boxes  
> properly.
> Then I just follow the steps Paul gave to install mahout on the  
> master node.
> After that i can run canopy with no problem. But I cannot run  
> kmeans. There
> is always the error java.lang.NoClassDefFoundError:
> com/google/gson/reflect/TypeToken.
>
> Can Paul, or Grant, help me out this please, thanks!
>
>
> tigertail wrote:
>>
>> Hi Paul,
>>
>> Sorry for the naive question, can you show me how to "flatten the  
>> JOB with
>> all classes in the same JAR"? And has this error been fixed in the  
>> new SVN
>> version?
>>
>>
>> Paul Ingles-4 wrote:
>>>
>>> I've flattened the JOB with all classes in the same JAR and that  
>>> works
>>> successfully.
>>>
>>> Steps:
>>>
>>> 1) svn co http://svn.apache.org/repos/asf/lucene/mahout/trunk  
>>> mahout-
>>> trunk
>>> 2) cd mahout-trunk
>>> 3) mvn install
>>> 4) hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars
>>> examples/target/dependency/gson-1.3.jar
>>>
>>> As for setting up Hadoop in pseudo-distributed, that was done
>>> following the guide on the site but I'll check that again if it's  
>>> been
>>> updated recently.
>>>
>>> Thanks again for all the help,
>>> Paul
>>>
>>> On 17 Jul 2009, at 13:39, Grant Ingersoll wrote:
>>>
>>>> Have you tried flattening the JOB so all the classes are packed  
>>>> in a
>>>> single JAR?  Also, can you give the full list of steps you are
>>>> doing, because I am able to run this in pseudo-distro without
>>>> getting this error.  Also, have you checked the Hadoop logs  
>>>> ($HADOOP/
>>>> logs, I believe)
>>>>
>>>> I also notice that the Hadoop quick start has different
>>>> configuration settings now due to 0.20
>>>>
>>>> -Grant
>>>>
>>>> On Jul 17, 2009, at 5:00 AM, Paul Ingles wrote:
>>>>
>>>>> I've tried re-running specifically adding the gson jar as follows:
>>>>>
>>>>> $ hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars
>>>>> examples/target/dependency/gson-1.3.jar
>>>>>
>>>>> Unfortunately, I get the same errors as before:
>>>>>
>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Clustering
>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Running Clustering
>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Input: output/data
>>>>> Clusters In: output/clusters-4 Out: output/points Distance:
>>>>> org.apache.mahout.utils.EuclideanDistanceMeasure
>>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: convergence: 0.5 Input
>>>>> Vectors: org.apache.mahout.matrix.SparseVector
>>>>> 09/07/17 09:53:50 WARN mapred.JobClient: Use GenericOptionsParser
>>>>> for parsing the arguments. Applications should implement Tool for
>>>>> the same.
>>>>> 09/07/17 09:53:50 INFO mapred.FileInputFormat: Total input paths  
>>>>> to
>>>>> process : 2
>>>>> 09/07/17 09:53:51 INFO mapred.JobClient: Running job:
>>>>> job_200907161209_0018
>>>>> 09/07/17 09:53:52 INFO mapred.JobClient:  map 0% reduce 0%
>>>>> 09/07/17 09:54:06 INFO mapred.JobClient: Task Id :
>>>>> attempt_200907161209_0018_m_000000_0, Status : FAILED
>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
>>>>> 	at java.lang.ClassLoader.defineClass1(Native Method)
>>>>> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>>>> 	at
>>>>> java 
>>>>> .security.SecureClassLoader.defineClass(SecureClassLoader.java:
>>>>> 124)
>>>>> 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>>>>> 	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>>> 	at
>>>>> org
>>>>> .apache
>>>>> .mahout.matrix.AbstractVector.asFormatString(AbstractVector.java: 
>>>>> 374)
>>>>> 	at
>>>>> org
>>>>> .apache
>>>>> .mahout
>>>>> .clustering 
>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:
>>>>> 198)
>>>>> 	at
>>>>> org
>>>>> .apache
>>>>> .mahout
>>>>> .clustering 
>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:
>>>>> 39)
>>>>> 	at
>>>>> org
>>>>> .apache
>>>>> .mahout
>>>>> .clustering 
>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:
>>>>> 32)
>>>>> 	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>> 	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>> 356)
>>>>> 	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>> 	at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>> com.google.gson.reflect.TypeToken
>>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>>> 	... 20 more
>>>>>
>>>>> This is running pseudo-distributed on my laptop.
>>>>>
>>>>> On 16 Jul 2009, at 18:57, Adil Aijaz wrote:
>>>>>
>>>>>> My basic understanding of the class loader stuff is:
>>>>>>
>>>>>> 1. Any jars that need to be available to map/reduce jobs should  
>>>>>> be
>>>>>> specified through -libjars  (e.g hadoop --config ... -libjars
>>>>>> gson.jar jar <path to my jar> ...)
>>>>>> 2. Any jars that need to be available to the main class should be
>>>>>> specified through lib/*.jar (that is in the mahout-examples-0.2-
>>>>>> SNAPSHOT/lib/*.jar)
>>>>>>
>>>>>> unless of course as Jeff is saying one ends up flattening the  
>>>>>> lib/
>>>>>> *.jar into top level classes.
>>>>>>
>>>>>> Adil
>>>>>>
>>>>>> Jeff Eastman wrote:
>>>>>>> Isn't this the same old problem that our Job jar file has a lib
>>>>>>> directory with the Mahout code in it and the way Hadoop loads  
>>>>>>> the
>>>>>>> jar it sometimes cannot resolve classes in it? IIRC, one needs  
>>>>>>> to
>>>>>>> smash the job jar file into a single jar in order for Dirichlet
>>>>>>> (at least, and any other examples which contain non-core
>>>>>>> classes). I confess I do not understand the class loader stuff
>>>>>>> enough to be more specific.
>>>>>>>
>>>>>>> I have duplicated the CNF exception by defining and using a  
>>>>>>> user-
>>>>>>> defined distance measure in the Job file and running KMeans with
>>>>>>> it, so it is not specific to Dirichlet.
>>>>>>>
>>>>>>>
>>>>>>> classes
>>>>>>> Grant Ingersoll wrote:
>>>>>>>> Hmm, I'm not seeing the ClassNotFound problem but am getting
>>>>>>>> fetch failures.  Will look later.
>>>>>>>>
>>>>>>>> -Grant
>>>>>>>>
>>>>>>>> On Jul 16, 2009, at 11:32 AM, Paul Ingles wrote:
>>>>>>>>
>>>>>>>>> I've just tried setting a brand new machine (Ubuntu 8.04
>>>>>>>>> Virtual Machine) with Hadoop 0.20.0 and running the compile
>>>>>>>>> jobs against it. I get the same problems as before... still
>>>>>>>>> scratching my head :(
>>>>>>>>>
>>>>>>>>> On 16 Jul 2009, at 12:15, Paul Ingles wrote:
>>>>>>>>>
>>>>>>>>>> Sure,
>>>>>>>>>>
>>>>>>>>>> I'm running (currently) on my MacBook Air, running OSX  
>>>>>>>>>> Leopard.
>>>>>>>>>>
>>>>>>>>>> JDK: java version "1.6.0_13"
>>>>>>>>>> Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
>>>>>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed
>>>>>>>>>> mode)
>>>>>>>>>>
>>>>>>>>>> Hadoop is: 0.20.0, r763504
>>>>>>>>>>
>>>>>>>>>> I'm compiling mahout from trunk (r794023) as follows (in the
>>>>>>>>>> root of the project directory):
>>>>>>>>>>
>>>>>>>>>> % mvn install
>>>>>>>>>> % hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job
>>>>>>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
>>>>>>>>>>
>>>>>>>>>> The only difference (for dirichlet) is the different class to
>>>>>>>>>> run.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Paul
>>>>>>>>>>
>>>>>>>>>> On 16 Jul 2009, at 11:33, Grant Ingersoll wrote:
>>>>>>>>>>
>>>>>>>>>>> Can you share how you built and how you are running, as in
>>>>>>>>>>> command line options, etc.?  Also, JDK version, Hadoop
>>>>>>>>>>> version, etc.
>>>>>>>>>>>
>>>>>>>>>>> On Jul 16, 2009, at 6:21 AM, Paul Ingles wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you for the suggestion. Unfortunately, when I tried
>>>>>>>>>>>> that I received the same error. I've also tried copying the
>>>>>>>>>>>> gson jar directly into $HADOOP_HOME/lib (when I was running
>>>>>>>>>>>> a single node pseudo-distributed) and get the same error
>>>>>>>>>>>> still.
>>>>>>>>>>>>
>>>>>>>>>>>> Weirdly enough, if I try and run the Dirichlet example on
>>>>>>>>>>>> the cluster I receive another ClassNotFoundException:
>>>>>>>>>>>>
>>>>>>>>>>>> 09/07/16 10:27:54 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>> attempt_200907161026_0002_m_000001_0, Status : FAILED
>>>>>>>>>>>> java.lang.RuntimeException: Error in configuring object
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop 
>>>>>>>>>>>> .util.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>> 93)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java: 
>>>>>>>>>>>> 64)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop
>>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>> at
>>>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:
>>>>>>>>>>>> 352)
>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>> 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.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>> 88)
>>>>>>>>>>>> ... 5 more
>>>>>>>>>>>> Caused by: java.lang.RuntimeException: Error in configuring
>>>>>>>>>>>> object
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop 
>>>>>>>>>>>> .util.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>> 93)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java: 
>>>>>>>>>>>> 64)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .hadoop
>>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>> at
>>>>>>>>>>>> org 
>>>>>>>>>>>> .apache.hadoop.mapred.MapRunner.configure(MapRunner.java:
>>>>>>>>>>>> 34)
>>>>>>>>>>>> ... 10 more
>>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>> 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.ReflectionUtils.setJobConf(ReflectionUtils.java:
>>>>>>>>>>>> 88)
>>>>>>>>>>>> ... 13 more
>>>>>>>>>>>> Caused by: java.lang.RuntimeException:
>>>>>>>>>>>> java.lang.ClassNotFoundException:
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .dirichlet
>>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:95)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .dirichlet.DirichletMapper.configure(DirichletMapper.java: 
>>>>>>>>>>>> 60)
>>>>>>>>>>>> ... 18 more
>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>> Method)
>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>> 188)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:
>>>>>>>>>>>> 288)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .dirichlet 
>>>>>>>>>>>> .DirichletDriver.createState(DirichletDriver.java:
>>>>>>>>>>>> 121)
>>>>>>>>>>>> at
>>>>>>>>>>>> org
>>>>>>>>>>>> .apache
>>>>>>>>>>>> .mahout
>>>>>>>>>>>> .clustering
>>>>>>>>>>>> .dirichlet
>>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:71)
>>>>>>>>>>>> ... 19 more
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hoping this sparks some other suggestions :)
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Paul
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed Jul 15 22:08:09 UTC 2009, Adil Aijaz <adil@yahoo-inc.com
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> try hadoop --config <hod-cluster-dir> jar -libjars <path  
>>>>>>>>>>>>> to
>>>>>>>>>>>>> gson.jar>
>>>>>>>>>>>>> <your job/jar file> <your class> <arguments>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Adil
>>>>>>>>>>>>>
>>>>>>>>>>>>> Paul Ingles wrote:
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Apologies for the cross-posting (I also sent this to the
>>>>>>>>>>>>>> Hadoop user
>>>>>>>>>>>>>> list) but I'm still getting errors if I try and run the
>>>>>>>>>>>>>> KMeans
>>>>>>>>>>>>>> examples on a cluster, whether that be my single-node Mac
>>>>>>>>>>>>>> Pro, or our
>>>>>>>>>>>>>> cluster. I've attached the stack trace at the bottom of
>>>>>>>>>>>>>> the email.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The gson jar is definitely included in the packaged .job,
>>>>>>>>>>>>>> and is also
>>>>>>>>>>>>>> in the temporary directory when the task tracker picks up
>>>>>>>>>>>>>> the work.
>>>>>>>>>>>>>> The gson jar also includes TypeToken.class in the  
>>>>>>>>>>>>>> expected
>>>>>>>>>>>>>> path.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Again, really appreciate people's help in getting this
>>>>>>>>>>>>>> going!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>>> 09/07/15 17:06:38 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>>>> attempt_200907151617_0010_m_000000_0, Status : FAILED
>>>>>>>>>>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/
>>>>>>>>>>>>>> TypeToken
>>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java: 
>>>>>>>>>>>>>> 703)
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> java
>>>>>>>>>>>>>> .security
>>>>>>>>>>>>>> .SecureClassLoader.defineClass(SecureClassLoader.java: 
>>>>>>>>>>>>>> 124)
>>>>>>>>>>>>>> at  
>>>>>>>>>>>>>> java.net.URLClassLoader.defineClass(URLClassLoader.java:
>>>>>>>>>>>>>> 260)
>>>>>>>>>>>>>> at java.net.URLClassLoader.access 
>>>>>>>>>>>>>> $000(URLClassLoader.java:
>>>>>>>>>>>>>> 56)
>>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native
>>>>>>>>>>>>>> Method)
>>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:
>>>>>>>>>>>>>> 188)
>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>>> at sun.misc.Launcher
>>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
>>>>>>>>>>>>>> 402)
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> org
>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>> .matrix 
>>>>>>>>>>>>>> .AbstractVector.asFormatString(AbstractVector.java:
>>>>>>>>>>>>>> 374)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> org
>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java: 
>>>>>>>>>>>>>> 198)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> org
>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>> .kmeans 
>>>>>>>>>>>>>> .KMeansClusterMapper.map(KMeansClusterMapper.java:39)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> org
>>>>>>>>>>>>>> .apache
>>>>>>>>>>>>>> .mahout
>>>>>>>>>>>>>> .clustering
>>>>>>>>>>>>>> .kmeans 
>>>>>>>>>>>>>> .KMeansClusterMapper.map(KMeansClusterMapper.java:32)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> at  
>>>>>>>>>>>>>> org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> org 
>>>>>>>>>>>>>> .apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:
>>>>>>>>>>>>>> 356)
>>>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>>>> com.google.gson.reflect.TypeToken
>>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native
>>>>>>>>>>>>>> Method)
>>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:
>>>>>>>>>>>>>> 188)
>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>>> at sun.misc.Launcher
>>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>>> at
>>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
>>>>>>>>>>>>>> 402)
>>>>>>>>>>>>>> ... 20 more
>>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Incidentally, as part of this work I've also  
>>>>>>>>>>>>>> implemented a
>>>>>>>>>>>>>> Pearson
>>>>>>>>>>>>>> distance measure, if people think it would be useful to  
>>>>>>>>>>>>>> be
>>>>>>>>>>>>>> folded in
>>>>>>>>>>>>>> I'd be happy to get the SVN patch with tests and
>>>>>>>>>>>>>> implementation together.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>> Paul
>>>>>>>>>>>
>>>>>>>>>>> --------------------------
>>>>>>>>>>> Grant Ingersoll
>>>>>>>>>>> http://www.lucidimagination.com/
>>>>>>>>>>>
>>>>>>>>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/
>>>>>>>>>>> Droids) using Solr/Lucene:
>>>>>>>>>>> http://www.lucidimagination.com/search
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --------------------------
>>>> Grant Ingersoll
>>>> http://www.lucidimagination.com/
>>>>
>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)
>>>> using Solr/Lucene:
>>>> http://www.lucidimagination.com/search
>>>>
>>>
>>>
>>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/ClassNotFoundException-with-pseudo-distributed-run-of-KMeans-tp24505889p24795839.html
> Sent from the Mahout User List mailing list archive at Nabble.com.
>

--------------------------
Grant Ingersoll
http://www.lucidimagination.com/

Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)  
using Solr/Lucene:
http://www.lucidimagination.com/search


Re: ClassNotFoundException with pseudo/distributed run of KMeans

Posted by tigertail <ty...@yahoo.com>.
Got to ask this again. 

I installed and started Hadoop-0.20.0 on a cluster with two boxes properly.
Then I just follow the steps Paul gave to install mahout on the master node.
After that i can run canopy with no problem. But I cannot run kmeans. There
is always the error java.lang.NoClassDefFoundError:
com/google/gson/reflect/TypeToken.

Can Paul, or Grant, help me out this please, thanks!


tigertail wrote:
> 
> Hi Paul,
> 
> Sorry for the naive question, can you show me how to "flatten the JOB with
> all classes in the same JAR"? And has this error been fixed in the new SVN
> version?
> 
> 
> Paul Ingles-4 wrote:
>> 
>> I've flattened the JOB with all classes in the same JAR and that works  
>> successfully.
>> 
>> Steps:
>> 
>> 1) svn co http://svn.apache.org/repos/asf/lucene/mahout/trunk mahout- 
>> trunk
>> 2) cd mahout-trunk
>> 3) mvn install
>> 4) hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars  
>> examples/target/dependency/gson-1.3.jar
>> 
>> As for setting up Hadoop in pseudo-distributed, that was done  
>> following the guide on the site but I'll check that again if it's been  
>> updated recently.
>> 
>> Thanks again for all the help,
>> Paul
>> 
>> On 17 Jul 2009, at 13:39, Grant Ingersoll wrote:
>> 
>>> Have you tried flattening the JOB so all the classes are packed in a  
>>> single JAR?  Also, can you give the full list of steps you are  
>>> doing, because I am able to run this in pseudo-distro without  
>>> getting this error.  Also, have you checked the Hadoop logs ($HADOOP/ 
>>> logs, I believe)
>>>
>>> I also notice that the Hadoop quick start has different  
>>> configuration settings now due to 0.20
>>>
>>> -Grant
>>>
>>> On Jul 17, 2009, at 5:00 AM, Paul Ingles wrote:
>>>
>>>> I've tried re-running specifically adding the gson jar as follows:
>>>>
>>>> $ hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars  
>>>> examples/target/dependency/gson-1.3.jar
>>>>
>>>> Unfortunately, I get the same errors as before:
>>>>
>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Clustering
>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Running Clustering
>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Input: output/data  
>>>> Clusters In: output/clusters-4 Out: output/points Distance:  
>>>> org.apache.mahout.utils.EuclideanDistanceMeasure
>>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: convergence: 0.5 Input  
>>>> Vectors: org.apache.mahout.matrix.SparseVector
>>>> 09/07/17 09:53:50 WARN mapred.JobClient: Use GenericOptionsParser  
>>>> for parsing the arguments. Applications should implement Tool for  
>>>> the same.
>>>> 09/07/17 09:53:50 INFO mapred.FileInputFormat: Total input paths to  
>>>> process : 2
>>>> 09/07/17 09:53:51 INFO mapred.JobClient: Running job:  
>>>> job_200907161209_0018
>>>> 09/07/17 09:53:52 INFO mapred.JobClient:  map 0% reduce 0%
>>>> 09/07/17 09:54:06 INFO mapred.JobClient: Task Id :  
>>>> attempt_200907161209_0018_m_000000_0, Status : FAILED
>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
>>>> 	at java.lang.ClassLoader.defineClass1(Native Method)
>>>> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>>> 	at  
>>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 
>>>> 124)
>>>> 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>>>> 	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>> 	at  
>>>> org 
>>>> .apache 
>>>> .mahout.matrix.AbstractVector.asFormatString(AbstractVector.java:374)
>>>> 	at  
>>>> org 
>>>> .apache 
>>>> .mahout 
>>>> .clustering.kmeans.Cluster.outputPointWithClusterInfo(Cluster.java: 
>>>> 198)
>>>> 	at  
>>>> org 
>>>> .apache 
>>>> .mahout 
>>>> .clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java: 
>>>> 39)
>>>> 	at  
>>>> org 
>>>> .apache 
>>>> .mahout 
>>>> .clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java: 
>>>> 32)
>>>> 	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>> 	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:356)
>>>> 	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>> 	at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>> Caused by: java.lang.ClassNotFoundException:  
>>>> com.google.gson.reflect.TypeToken
>>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>>> 	... 20 more
>>>>
>>>> This is running pseudo-distributed on my laptop.
>>>>
>>>> On 16 Jul 2009, at 18:57, Adil Aijaz wrote:
>>>>
>>>>> My basic understanding of the class loader stuff is:
>>>>>
>>>>> 1. Any jars that need to be available to map/reduce jobs should be  
>>>>> specified through -libjars  (e.g hadoop --config ... -libjars  
>>>>> gson.jar jar <path to my jar> ...)
>>>>> 2. Any jars that need to be available to the main class should be  
>>>>> specified through lib/*.jar (that is in the mahout-examples-0.2- 
>>>>> SNAPSHOT/lib/*.jar)
>>>>>
>>>>> unless of course as Jeff is saying one ends up flattening the lib/ 
>>>>> *.jar into top level classes.
>>>>>
>>>>> Adil
>>>>>
>>>>> Jeff Eastman wrote:
>>>>>> Isn't this the same old problem that our Job jar file has a lib  
>>>>>> directory with the Mahout code in it and the way Hadoop loads the  
>>>>>> jar it sometimes cannot resolve classes in it? IIRC, one needs to  
>>>>>> smash the job jar file into a single jar in order for Dirichlet  
>>>>>> (at least, and any other examples which contain non-core  
>>>>>> classes). I confess I do not understand the class loader stuff  
>>>>>> enough to be more specific.
>>>>>>
>>>>>> I have duplicated the CNF exception by defining and using a user- 
>>>>>> defined distance measure in the Job file and running KMeans with  
>>>>>> it, so it is not specific to Dirichlet.
>>>>>>
>>>>>>
>>>>>> classes
>>>>>> Grant Ingersoll wrote:
>>>>>>> Hmm, I'm not seeing the ClassNotFound problem but am getting  
>>>>>>> fetch failures.  Will look later.
>>>>>>>
>>>>>>> -Grant
>>>>>>>
>>>>>>> On Jul 16, 2009, at 11:32 AM, Paul Ingles wrote:
>>>>>>>
>>>>>>>> I've just tried setting a brand new machine (Ubuntu 8.04  
>>>>>>>> Virtual Machine) with Hadoop 0.20.0 and running the compile  
>>>>>>>> jobs against it. I get the same problems as before... still  
>>>>>>>> scratching my head :(
>>>>>>>>
>>>>>>>> On 16 Jul 2009, at 12:15, Paul Ingles wrote:
>>>>>>>>
>>>>>>>>> Sure,
>>>>>>>>>
>>>>>>>>> I'm running (currently) on my MacBook Air, running OSX Leopard.
>>>>>>>>>
>>>>>>>>> JDK: java version "1.6.0_13"
>>>>>>>>> Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
>>>>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed  
>>>>>>>>> mode)
>>>>>>>>>
>>>>>>>>> Hadoop is: 0.20.0, r763504
>>>>>>>>>
>>>>>>>>> I'm compiling mahout from trunk (r794023) as follows (in the  
>>>>>>>>> root of the project directory):
>>>>>>>>>
>>>>>>>>> % mvn install
>>>>>>>>> % hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
>>>>>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
>>>>>>>>>
>>>>>>>>> The only difference (for dirichlet) is the different class to  
>>>>>>>>> run.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Paul
>>>>>>>>>
>>>>>>>>> On 16 Jul 2009, at 11:33, Grant Ingersoll wrote:
>>>>>>>>>
>>>>>>>>>> Can you share how you built and how you are running, as in  
>>>>>>>>>> command line options, etc.?  Also, JDK version, Hadoop  
>>>>>>>>>> version, etc.
>>>>>>>>>>
>>>>>>>>>> On Jul 16, 2009, at 6:21 AM, Paul Ingles wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Thank you for the suggestion. Unfortunately, when I tried  
>>>>>>>>>>> that I received the same error. I've also tried copying the  
>>>>>>>>>>> gson jar directly into $HADOOP_HOME/lib (when I was running  
>>>>>>>>>>> a single node pseudo-distributed) and get the same error  
>>>>>>>>>>> still.
>>>>>>>>>>>
>>>>>>>>>>> Weirdly enough, if I try and run the Dirichlet example on  
>>>>>>>>>>> the cluster I receive another ClassNotFoundException:
>>>>>>>>>>>
>>>>>>>>>>> 09/07/16 10:27:54 INFO mapred.JobClient: Task Id :  
>>>>>>>>>>> attempt_200907161026_0002_m_000001_0, Status : FAILED
>>>>>>>>>>> java.lang.RuntimeException: Error in configuring object
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>>> 93)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop 
>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>  at  
>>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>>>>>>>> 352)
>>>>>>>>>>>  at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>  at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>  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.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>>> 88)
>>>>>>>>>>>  ... 5 more
>>>>>>>>>>> Caused by: java.lang.RuntimeException: Error in configuring  
>>>>>>>>>>> object
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>>> 93)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .hadoop 
>>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>>  at  
>>>>>>>>>>> org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java: 
>>>>>>>>>>> 34)
>>>>>>>>>>>  ... 10 more
>>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>>  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.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>>> 88)
>>>>>>>>>>>  ... 13 more
>>>>>>>>>>> Caused by: java.lang.RuntimeException:  
>>>>>>>>>>> java.lang.ClassNotFoundException:  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .dirichlet 
>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:95)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .dirichlet.DirichletMapper.configure(DirichletMapper.java:60)
>>>>>>>>>>>  ... 18 more
>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>>  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>>>>  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>>>>>>>>  at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
>>>>>>>>>>>  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 
>>>>>>>>>>> 288)
>>>>>>>>>>>  at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .dirichlet.DirichletDriver.createState(DirichletDriver.java: 
>>>>>>>>>>> 121)
>>>>>>>>>>>  at  
>>>>>>>>>>> org 
>>>>>>>>>>> .apache 
>>>>>>>>>>> .mahout 
>>>>>>>>>>> .clustering 
>>>>>>>>>>> .dirichlet 
>>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:71)
>>>>>>>>>>>  ... 19 more
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Hoping this sparks some other suggestions :)
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Paul
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed Jul 15 22:08:09 UTC 2009, Adil Aijaz <adil@yahoo-inc.com 
>>>>>>>>>>> > wrote:
>>>>>>>>>>>> try hadoop --config <hod-cluster-dir> jar -libjars <path to  
>>>>>>>>>>>> gson.jar>
>>>>>>>>>>>> <your job/jar file> <your class> <arguments>
>>>>>>>>>>>>
>>>>>>>>>>>> Adil
>>>>>>>>>>>>
>>>>>>>>>>>> Paul Ingles wrote:
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Apologies for the cross-posting (I also sent this to the  
>>>>>>>>>>>>> Hadoop user
>>>>>>>>>>>>> list) but I'm still getting errors if I try and run the  
>>>>>>>>>>>>> KMeans
>>>>>>>>>>>>> examples on a cluster, whether that be my single-node Mac  
>>>>>>>>>>>>> Pro, or our
>>>>>>>>>>>>> cluster. I've attached the stack trace at the bottom of  
>>>>>>>>>>>>> the email.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The gson jar is definitely included in the packaged .job,  
>>>>>>>>>>>>> and is also
>>>>>>>>>>>>> in the temporary directory when the task tracker picks up  
>>>>>>>>>>>>> the work.
>>>>>>>>>>>>> The gson jar also includes TypeToken.class in the expected  
>>>>>>>>>>>>> path.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Again, really appreciate people's help in getting this  
>>>>>>>>>>>>> going!
>>>>>>>>>>>>>
>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>> 09/07/15 17:06:38 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>>> attempt_200907151617_0010_m_000000_0, Status : FAILED
>>>>>>>>>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/ 
>>>>>>>>>>>>> TypeToken
>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> java 
>>>>>>>>>>>>> .security 
>>>>>>>>>>>>> .SecureClassLoader.defineClass(SecureClassLoader.java:124)
>>>>>>>>>>>>> at java.net.URLClassLoader.defineClass(URLClassLoader.java: 
>>>>>>>>>>>>> 260)
>>>>>>>>>>>>> at java.net.URLClassLoader.access$000(URLClassLoader.java: 
>>>>>>>>>>>>> 56)
>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>>> Method)
>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>>> 188)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>> at  
>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 
>>>>>>>>>>>>> 402)
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org 
>>>>>>>>>>>>> .apache 
>>>>>>>>>>>>> .mahout 
>>>>>>>>>>>>> .matrix.AbstractVector.asFormatString(AbstractVector.java: 
>>>>>>>>>>>>> 374)
>>>>>>>>>>>>>
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org 
>>>>>>>>>>>>> .apache 
>>>>>>>>>>>>> .mahout 
>>>>>>>>>>>>> .clustering 
>>>>>>>>>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:198)
>>>>>>>>>>>>>
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org 
>>>>>>>>>>>>> .apache 
>>>>>>>>>>>>> .mahout 
>>>>>>>>>>>>> .clustering 
>>>>>>>>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:39)
>>>>>>>>>>>>>
>>>>>>>>>>>>> at
>>>>>>>>>>>>> org 
>>>>>>>>>>>>> .apache 
>>>>>>>>>>>>> .mahout 
>>>>>>>>>>>>> .clustering 
>>>>>>>>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:32)
>>>>>>>>>>>>>
>>>>>>>>>>>>> at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>>>>>>>>>> at  
>>>>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>>>>>>>>>> 356)
>>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>>> com.google.gson.reflect.TypeToken
>>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>>> Method)
>>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>>> 188)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>>> at  
>>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 
>>>>>>>>>>>>> 402)
>>>>>>>>>>>>> ... 20 more
>>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>>
>>>>>>>>>>>>> Incidentally, as part of this work I've also implemented a  
>>>>>>>>>>>>> Pearson
>>>>>>>>>>>>> distance measure, if people think it would be useful to be  
>>>>>>>>>>>>> folded in
>>>>>>>>>>>>> I'd be happy to get the SVN patch with tests and  
>>>>>>>>>>>>> implementation together.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Paul
>>>>>>>>>>
>>>>>>>>>> --------------------------
>>>>>>>>>> Grant Ingersoll
>>>>>>>>>> http://www.lucidimagination.com/
>>>>>>>>>>
>>>>>>>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/ 
>>>>>>>>>> Droids) using Solr/Lucene:
>>>>>>>>>> http://www.lucidimagination.com/search
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>> --------------------------
>>> Grant Ingersoll
>>> http://www.lucidimagination.com/
>>>
>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)  
>>> using Solr/Lucene:
>>> http://www.lucidimagination.com/search
>>>
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ClassNotFoundException-with-pseudo-distributed-run-of-KMeans-tp24505889p24795839.html
Sent from the Mahout User List mailing list archive at Nabble.com.


Re: ClassNotFoundException with pseudo/distributed run of KMeans

Posted by tigertail <ty...@yahoo.com>.
Hi Paul,

Sorry for the naive question, can you show me how to "flatten the JOB with
all classes in the same JAR"? And has this error been fixed in the new SVN
version?


Paul Ingles-4 wrote:
> 
> I've flattened the JOB with all classes in the same JAR and that works  
> successfully.
> 
> Steps:
> 
> 1) svn co http://svn.apache.org/repos/asf/lucene/mahout/trunk mahout- 
> trunk
> 2) cd mahout-trunk
> 3) mvn install
> 4) hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars  
> examples/target/dependency/gson-1.3.jar
> 
> As for setting up Hadoop in pseudo-distributed, that was done  
> following the guide on the site but I'll check that again if it's been  
> updated recently.
> 
> Thanks again for all the help,
> Paul
> 
> On 17 Jul 2009, at 13:39, Grant Ingersoll wrote:
> 
>> Have you tried flattening the JOB so all the classes are packed in a  
>> single JAR?  Also, can you give the full list of steps you are  
>> doing, because I am able to run this in pseudo-distro without  
>> getting this error.  Also, have you checked the Hadoop logs ($HADOOP/ 
>> logs, I believe)
>>
>> I also notice that the Hadoop quick start has different  
>> configuration settings now due to 0.20
>>
>> -Grant
>>
>> On Jul 17, 2009, at 5:00 AM, Paul Ingles wrote:
>>
>>> I've tried re-running specifically adding the gson jar as follows:
>>>
>>> $ hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -libjars  
>>> examples/target/dependency/gson-1.3.jar
>>>
>>> Unfortunately, I get the same errors as before:
>>>
>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Clustering
>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Running Clustering
>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: Input: output/data  
>>> Clusters In: output/clusters-4 Out: output/points Distance:  
>>> org.apache.mahout.utils.EuclideanDistanceMeasure
>>> 09/07/17 09:53:50 INFO kmeans.KMeansDriver: convergence: 0.5 Input  
>>> Vectors: org.apache.mahout.matrix.SparseVector
>>> 09/07/17 09:53:50 WARN mapred.JobClient: Use GenericOptionsParser  
>>> for parsing the arguments. Applications should implement Tool for  
>>> the same.
>>> 09/07/17 09:53:50 INFO mapred.FileInputFormat: Total input paths to  
>>> process : 2
>>> 09/07/17 09:53:51 INFO mapred.JobClient: Running job:  
>>> job_200907161209_0018
>>> 09/07/17 09:53:52 INFO mapred.JobClient:  map 0% reduce 0%
>>> 09/07/17 09:54:06 INFO mapred.JobClient: Task Id :  
>>> attempt_200907161209_0018_m_000000_0, Status : FAILED
>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/TypeToken
>>> 	at java.lang.ClassLoader.defineClass1(Native Method)
>>> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>> 	at  
>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java: 
>>> 124)
>>> 	at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>>> 	at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>> 	at  
>>> org 
>>> .apache 
>>> .mahout.matrix.AbstractVector.asFormatString(AbstractVector.java:374)
>>> 	at  
>>> org 
>>> .apache 
>>> .mahout 
>>> .clustering.kmeans.Cluster.outputPointWithClusterInfo(Cluster.java: 
>>> 198)
>>> 	at  
>>> org 
>>> .apache 
>>> .mahout 
>>> .clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java: 
>>> 39)
>>> 	at  
>>> org 
>>> .apache 
>>> .mahout 
>>> .clustering.kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java: 
>>> 32)
>>> 	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>> 	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:356)
>>> 	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>> 	at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>> Caused by: java.lang.ClassNotFoundException:  
>>> com.google.gson.reflect.TypeToken
>>> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>> 	at java.security.AccessController.doPrivileged(Native Method)
>>> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>>> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>> 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>>> 	... 20 more
>>>
>>> This is running pseudo-distributed on my laptop.
>>>
>>> On 16 Jul 2009, at 18:57, Adil Aijaz wrote:
>>>
>>>> My basic understanding of the class loader stuff is:
>>>>
>>>> 1. Any jars that need to be available to map/reduce jobs should be  
>>>> specified through -libjars  (e.g hadoop --config ... -libjars  
>>>> gson.jar jar <path to my jar> ...)
>>>> 2. Any jars that need to be available to the main class should be  
>>>> specified through lib/*.jar (that is in the mahout-examples-0.2- 
>>>> SNAPSHOT/lib/*.jar)
>>>>
>>>> unless of course as Jeff is saying one ends up flattening the lib/ 
>>>> *.jar into top level classes.
>>>>
>>>> Adil
>>>>
>>>> Jeff Eastman wrote:
>>>>> Isn't this the same old problem that our Job jar file has a lib  
>>>>> directory with the Mahout code in it and the way Hadoop loads the  
>>>>> jar it sometimes cannot resolve classes in it? IIRC, one needs to  
>>>>> smash the job jar file into a single jar in order for Dirichlet  
>>>>> (at least, and any other examples which contain non-core  
>>>>> classes). I confess I do not understand the class loader stuff  
>>>>> enough to be more specific.
>>>>>
>>>>> I have duplicated the CNF exception by defining and using a user- 
>>>>> defined distance measure in the Job file and running KMeans with  
>>>>> it, so it is not specific to Dirichlet.
>>>>>
>>>>>
>>>>> classes
>>>>> Grant Ingersoll wrote:
>>>>>> Hmm, I'm not seeing the ClassNotFound problem but am getting  
>>>>>> fetch failures.  Will look later.
>>>>>>
>>>>>> -Grant
>>>>>>
>>>>>> On Jul 16, 2009, at 11:32 AM, Paul Ingles wrote:
>>>>>>
>>>>>>> I've just tried setting a brand new machine (Ubuntu 8.04  
>>>>>>> Virtual Machine) with Hadoop 0.20.0 and running the compile  
>>>>>>> jobs against it. I get the same problems as before... still  
>>>>>>> scratching my head :(
>>>>>>>
>>>>>>> On 16 Jul 2009, at 12:15, Paul Ingles wrote:
>>>>>>>
>>>>>>>> Sure,
>>>>>>>>
>>>>>>>> I'm running (currently) on my MacBook Air, running OSX Leopard.
>>>>>>>>
>>>>>>>> JDK: java version "1.6.0_13"
>>>>>>>> Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
>>>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed  
>>>>>>>> mode)
>>>>>>>>
>>>>>>>> Hadoop is: 0.20.0, r763504
>>>>>>>>
>>>>>>>> I'm compiling mahout from trunk (r794023) as follows (in the  
>>>>>>>> root of the project directory):
>>>>>>>>
>>>>>>>> % mvn install
>>>>>>>> % hadoop jar examples/target/mahout-examples-0.2-SNAPSHOT.job  
>>>>>>>> org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
>>>>>>>>
>>>>>>>> The only difference (for dirichlet) is the different class to  
>>>>>>>> run.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Paul
>>>>>>>>
>>>>>>>> On 16 Jul 2009, at 11:33, Grant Ingersoll wrote:
>>>>>>>>
>>>>>>>>> Can you share how you built and how you are running, as in  
>>>>>>>>> command line options, etc.?  Also, JDK version, Hadoop  
>>>>>>>>> version, etc.
>>>>>>>>>
>>>>>>>>> On Jul 16, 2009, at 6:21 AM, Paul Ingles wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Thank you for the suggestion. Unfortunately, when I tried  
>>>>>>>>>> that I received the same error. I've also tried copying the  
>>>>>>>>>> gson jar directly into $HADOOP_HOME/lib (when I was running  
>>>>>>>>>> a single node pseudo-distributed) and get the same error  
>>>>>>>>>> still.
>>>>>>>>>>
>>>>>>>>>> Weirdly enough, if I try and run the Dirichlet example on  
>>>>>>>>>> the cluster I receive another ClassNotFoundException:
>>>>>>>>>>
>>>>>>>>>> 09/07/16 10:27:54 INFO mapred.JobClient: Task Id :  
>>>>>>>>>> attempt_200907161026_0002_m_000001_0, Status : FAILED
>>>>>>>>>> java.lang.RuntimeException: Error in configuring object
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>> 93)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop 
>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>  at  
>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>>>>>>> 352)
>>>>>>>>>>  at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>  at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>  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.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>> 88)
>>>>>>>>>>  ... 5 more
>>>>>>>>>> Caused by: java.lang.RuntimeException: Error in configuring  
>>>>>>>>>> object
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>> 93)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .hadoop 
>>>>>>>>>> .util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
>>>>>>>>>>  at  
>>>>>>>>>> org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java: 
>>>>>>>>>> 34)
>>>>>>>>>>  ... 10 more
>>>>>>>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>>>>>>>  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.ReflectionUtils.setJobConf(ReflectionUtils.java: 
>>>>>>>>>> 88)
>>>>>>>>>>  ... 13 more
>>>>>>>>>> Caused by: java.lang.RuntimeException:  
>>>>>>>>>> java.lang.ClassNotFoundException:  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .dirichlet 
>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:95)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .dirichlet.DirichletMapper.configure(DirichletMapper.java:60)
>>>>>>>>>>  ... 18 more
>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .syntheticcontrol.dirichlet.NormalScModelDistribution
>>>>>>>>>>  at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>  at java.security.AccessController.doPrivileged(Native Method)
>>>>>>>>>>  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>>>>>>>>  at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
>>>>>>>>>>  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 
>>>>>>>>>> 288)
>>>>>>>>>>  at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .dirichlet.DirichletDriver.createState(DirichletDriver.java: 
>>>>>>>>>> 121)
>>>>>>>>>>  at  
>>>>>>>>>> org 
>>>>>>>>>> .apache 
>>>>>>>>>> .mahout 
>>>>>>>>>> .clustering 
>>>>>>>>>> .dirichlet 
>>>>>>>>>> .DirichletMapper.getDirichletState(DirichletMapper.java:71)
>>>>>>>>>>  ... 19 more
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hoping this sparks some other suggestions :)
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Paul
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed Jul 15 22:08:09 UTC 2009, Adil Aijaz <adil@yahoo-inc.com 
>>>>>>>>>> > wrote:
>>>>>>>>>>> try hadoop --config <hod-cluster-dir> jar -libjars <path to  
>>>>>>>>>>> gson.jar>
>>>>>>>>>>> <your job/jar file> <your class> <arguments>
>>>>>>>>>>>
>>>>>>>>>>> Adil
>>>>>>>>>>>
>>>>>>>>>>> Paul Ingles wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Apologies for the cross-posting (I also sent this to the  
>>>>>>>>>>>> Hadoop user
>>>>>>>>>>>> list) but I'm still getting errors if I try and run the  
>>>>>>>>>>>> KMeans
>>>>>>>>>>>> examples on a cluster, whether that be my single-node Mac  
>>>>>>>>>>>> Pro, or our
>>>>>>>>>>>> cluster. I've attached the stack trace at the bottom of  
>>>>>>>>>>>> the email.
>>>>>>>>>>>>
>>>>>>>>>>>> The gson jar is definitely included in the packaged .job,  
>>>>>>>>>>>> and is also
>>>>>>>>>>>> in the temporary directory when the task tracker picks up  
>>>>>>>>>>>> the work.
>>>>>>>>>>>> The gson jar also includes TypeToken.class in the expected  
>>>>>>>>>>>> path.
>>>>>>>>>>>>
>>>>>>>>>>>> Again, really appreciate people's help in getting this  
>>>>>>>>>>>> going!
>>>>>>>>>>>>
>>>>>>>>>>>> ----snip----
>>>>>>>>>>>> 09/07/15 17:06:38 INFO mapred.JobClient: Task Id :
>>>>>>>>>>>> attempt_200907151617_0010_m_000000_0, Status : FAILED
>>>>>>>>>>>> java.lang.NoClassDefFoundError: com/google/gson/reflect/ 
>>>>>>>>>>>> TypeToken
>>>>>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>>>>>>>>>>>> at
>>>>>>>>>>>> java 
>>>>>>>>>>>> .security 
>>>>>>>>>>>> .SecureClassLoader.defineClass(SecureClassLoader.java:124)
>>>>>>>>>>>> at java.net.URLClassLoader.defineClass(URLClassLoader.java: 
>>>>>>>>>>>> 260)
>>>>>>>>>>>> at java.net.URLClassLoader.access$000(URLClassLoader.java: 
>>>>>>>>>>>> 56)
>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>> Method)
>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>> 188)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>> at  
>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 
>>>>>>>>>>>> 402)
>>>>>>>>>>>> at
>>>>>>>>>>>> org 
>>>>>>>>>>>> .apache 
>>>>>>>>>>>> .mahout 
>>>>>>>>>>>> .matrix.AbstractVector.asFormatString(AbstractVector.java: 
>>>>>>>>>>>> 374)
>>>>>>>>>>>>
>>>>>>>>>>>> at
>>>>>>>>>>>> org 
>>>>>>>>>>>> .apache 
>>>>>>>>>>>> .mahout 
>>>>>>>>>>>> .clustering 
>>>>>>>>>>>> .kmeans.Cluster.outputPointWithClusterInfo(Cluster.java:198)
>>>>>>>>>>>>
>>>>>>>>>>>> at
>>>>>>>>>>>> org 
>>>>>>>>>>>> .apache 
>>>>>>>>>>>> .mahout 
>>>>>>>>>>>> .clustering 
>>>>>>>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:39)
>>>>>>>>>>>>
>>>>>>>>>>>> at
>>>>>>>>>>>> org 
>>>>>>>>>>>> .apache 
>>>>>>>>>>>> .mahout 
>>>>>>>>>>>> .clustering 
>>>>>>>>>>>> .kmeans.KMeansClusterMapper.map(KMeansClusterMapper.java:32)
>>>>>>>>>>>>
>>>>>>>>>>>> at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
>>>>>>>>>>>> at  
>>>>>>>>>>>> org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java: 
>>>>>>>>>>>> 356)
>>>>>>>>>>>> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
>>>>>>>>>>>> at org.apache.hadoop.mapred.Child.main(Child.java:170)
>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>>>>>>> com.google.gson.reflect.TypeToken
>>>>>>>>>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>>>>>>>>>> at java.security.AccessController.doPrivileged(Native  
>>>>>>>>>>>> Method)
>>>>>>>>>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java: 
>>>>>>>>>>>> 188)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>>>>>>>>>>>> at sun.misc.Launcher 
>>>>>>>>>>>> $AppClassLoader.loadClass(Launcher.java:330)
>>>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>>>>>>>>>>>> at  
>>>>>>>>>>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 
>>>>>>>>>>>> 402)
>>>>>>>>>>>> ... 20 more
>>>>>>>>>>>> ----snip----
>>>>>>>>>>>>
>>>>>>>>>>>> Incidentally, as part of this work I've also implemented a  
>>>>>>>>>>>> Pearson
>>>>>>>>>>>> distance measure, if people think it would be useful to be  
>>>>>>>>>>>> folded in
>>>>>>>>>>>> I'd be happy to get the SVN patch with tests and  
>>>>>>>>>>>> implementation together.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Paul
>>>>>>>>>
>>>>>>>>> --------------------------
>>>>>>>>> Grant Ingersoll
>>>>>>>>> http://www.lucidimagination.com/
>>>>>>>>>
>>>>>>>>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/ 
>>>>>>>>> Droids) using Solr/Lucene:
>>>>>>>>> http://www.lucidimagination.com/search
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>> --------------------------
>> Grant Ingersoll
>> http://www.lucidimagination.com/
>>
>> Search the Lucene ecosystem (Lucene/Solr/Nutch/Mahout/Tika/Droids)  
>> using Solr/Lucene:
>> http://www.lucidimagination.com/search
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ClassNotFoundException-with-pseudo-distributed-run-of-KMeans-tp24505889p24746466.html
Sent from the Mahout User List mailing list archive at Nabble.com.