If I submit a jar that has a lib directory that contains a bunch of jars, shouldn't those jars be in the classpath and available to all nodes?

The reason I ask this is because I am trying to submit a jar myjar.jar that has the following structure

--src
 \.... (My source classes)
-- lib
  \
   -- mahout-collections-0.3.jar
   -- mahout-core-0.3.jar
   -- mahout-math-0.3.jar
   -- hbase-0.20.0.jar
   -- commons-cli-2.0-mahout.jar

Now the job I am trying to run is actually part of mahout-core-0.3... not src. The job starts but then fails with the following error

10/09/10 03:15:13 INFO mapred.JobClient: Task Id : attempt_201009100306_0003_r_000000_0, Status : FAILED
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115) at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:550)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:408)
    at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:113)
    ... 3 more
Caused by: java.lang.NoClassDefFoundError: org/apache/mahout/math/map/OpenObjectIntHashMap at org.apache.mahout.fpm.pfpgrowth.ParallelFPGrowthReducer.<init>(ParallelFPGrowthReducer.java:56)
    ... 8 more


Apparently it cant find the org/apache/mahout/math/map/OpenObjectIntHashMap.class although that class is definitely in mahout-collections-0.3.jar. Is this a problem because the mahout-core-0.3.jar doesn't have a lib directory?

What is an easy way around this?

Thanks




Reply via email to