4 Stimmen

Jar funktioniert mit Standalone-Hadoop, aber nicht auf dem eigentlichen Cluster (java.lang.ClassNotFoundException: org.jfree.data.xy.XYDataset)

Ich versuche, mein Projekt mit Eclipse auf Windows zu erstellen und auf einem Linux-Cluster auszuführen. Das Projekt hängt von einigen externen Jars ab, die ich mit Eclipse's "Export->Runnable JAR -> Package required library into jar" Build-Option eingeschlossen habe. Ich habe überprüft, dass das Jar die Klassen in einer Ordnerstruktur enthält und dass die externen Jars im Root-Ordner liegen.

Auf Hadoop Standalone, Cygwin und Linux funktioniert dies einwandfrei, aber auf einem echten Hadoop-Linux-Cluster schlägt es fehl, wenn es versucht, auf eine Klasse aus dem ersten externen Jar zuzugreifen, und es wird eine ClassNotFoundException .

Gibt es eine Möglichkeit, Hadoop zu zwingen, das Jar zu durchsuchen? Ich dachte, das würde funktionieren.

10/07/16 11:44:59 INFO mapred.JobClient: Task Id : attempt_201007161003_0005_m_000001_0, Status : FAILED
Error: java.lang.ClassNotFoundException: org.jfree.data.xy.XYDataset
 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:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 at org.akintayo.analysis.ecg.preprocess.ReadPlotECG.plotECG(ReadPlotECG.java:27)
 at org.akintayo.analysis.ecg.preprocess.BuildECGImages.writeECGImages(BuildECGImages.java:216)
 at org.akintayo.analysis.ecg.preprocess.BuildECGImages.converSingleECGToImage(BuildECGImages.java:305)
 at org.akintayo.analysis.ecg.preprocess.BuildECGImages.main(BuildECGImages.java:457)
 at org.akintayo.hadoop.HadoopECGPreprocessByFile$MapTest.map(HadoopECGPreprocessByFile.java:208)
 at org.akintayo.hadoop.HadoopECGPreprocessByFile$MapTest.map(HadoopECGPreprocessByFile.java:1)
 at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
 at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
 at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
 at org.apache.hadoop.mapred.Child.main(Child.java:170)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X