Daniel Wressle wrote:
Hello Dennis, Ted and Christophe.

I had, as a precaution, built my jar so that the lib/ directory contained both the actual jars AND the jars unzipped, i.e:

lib/:

foo.jar
foo2.jar
foo3.jar
foo1/api/bar/gazonk/foo.class
foo2/....

Just to cover as much ground as possible.

I do include a class in constructor call to the JobConf, but it is the name of *my* class (in this case, LogParser.class). Glancing at the constructor in the API I can not seem to use this constructor to tell the JobConf which additional classes to expect.

By using a class in the jobconf you are essentially telling hadoop that the jar which contains your class is the hadoop job jar. But if I am understanding you, your job jar doesn't contain the other jars, instead you put them in the lib directory of hadoop?

I haven't done it this way but from what I remember you would need to unzip your jar, create a lib directory in your jar, and then put and referenced third party jars in that lib directory to be included in your jar, then zip it back up and deploy as a single jar.

Of course the new patch does away with the need to do this :)

Dennis Kubes

Dennis, your patch sounds _very_ interesting. How would I go about acquiring it when it is done? :)

Thank you for your time and responses.
/Daniel


Dennis Kubes wrote:
This won't solve your current error, but I should have a revised patch for HADOOP-1622, which deals which allows multiple resources including jars for hadoop jobs finished and posted this afternoon.

Dennis Kubes

Ted Dunning wrote:
Can you show us the lines in your code where you construct the JobConf?

If you don't include a class in that constructor call, then Hadoop doesn't
have enough of a hint to find your jar files.


On 10/8/07 12:03 PM, "Christophe Taton" <[EMAIL PROTECTED]> wrote:

Hi Daniel,
Can you try to build and run a single jar file which contains all
required class files directly (i.e. without including jar files inside
the job jar file)?
This should prevent classloading problems. If the error still persists,
then you might suspect other problems.
Chris

Daniel Wressle wrote:
Hello Hadoopers!

I have just recently started using Hadoop and I have a question that
has puzzled me for a couple of days now.

I have already browsed the mailing list and found some relevant posts,
especially
http://mail-archives.apache.org/mod_mbox/lucene-hadoop-user/200708.mbox/%3c84
[EMAIL PROTECTED],
but the solution eludes me.

My Map/Reduce job relies on external jars and I had to modify my ant
script to include them in the lib/ directory of my jar file. So far,
so good. The job runs without any issues when I issue the job on my
local machine only.

However, adding a second machine to the mini-cluster presents the
following problem: a NullPointerException being thrown as soon as I
call any function within a class I have imported from the external
jars. Please note that this will only happen on the other machine, the
maps on my main machine, which I submit the job on, will proceed
without any warnings.

java.lang.NullPointerException at xxx.xxx.xxx (Unknown Source) is the
actual log output from hadoop.

My jar file contains all the necessary jars in the lib/ directory. Do
I need to place them somewhere else on the slaves in order for my
submitted job to be able to use them?

Any pointers would be much appreciated.


Reply via email to