Yes this will work. You will need to configure the class path to include
that directory.
The Tasktracker's really only have the classpath as setup by
conf/hadoop-env.sh, and the Tasktracker$Child's have that classpath +
the unpacked distributed cache directory.
Saptarshi Guha wrote:
Hello,
What if each machine has the identical directory structure and
Rserve.jar is present at the same place(i.e the entry in the classpath
is identical across machines). The will the latter suggestion work?
On Thu, Dec 18, 2008 at 9:02 PM, Zheng Shao <[email protected]> wrote:
You either need to add the your Rserve.jar to -libjars, or put Rserve.jar in a
cluster-accessible NFS mount (and add it to CLASSPATH/HADOOP_CLASSPATH).
Zheng
-----Original Message-----
From: Saptarshi Guha [mailto:[email protected]]
Sent: Thursday, December 18, 2008 3:38 PM
To: [email protected]
Subject: Classes Not Found even when classpath is mentioned (Starting mapreduce
from another app)
Hello,
I intend to start a mapreduce job from another java app, using
ToolRunner.run method. This works fine on a local job. However when
distributed i get java.lang.NoClassDefFoundError:
org/rosuda/REngine/Rserve/RserveException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:74)
at org.apache.hadoop.mapred.JobConf.getInputFormat(JobConf.java:402)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:219)
at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2207)
Now, i have a CLASSPATH entry in my .bashrc which contains the
location of Rserve.jar (which contains the above classes), yet I still
get the above error.
Do I have to somehow emulate RunJar.main or is there a simpler way out?
Thank you
Saptarshi
--
Saptarshi Guha - [email protected]