2017-06-15 1 views
0

Je souhaite soumettre mon fichier jar sur cluster en utilisant master = yarn-cluster, mais je reçois une erreur.deeplearning4j sur le cluster de fils échoue

java.lang.NoClassDefFoundError: org/nd4j/Nd4jRegistrator 
     at Main.main(Main.java:51) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:552) 
Caused by: java.lang.ClassNotFoundException: org.nd4j.Nd4jRegistrator 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 

Je mis sparkConf comme celui-ci, en utilisant sérialiseur krio, parce que j'avais des exceptions quand je cours sans elle

SparkConf sparkConf = new SparkConf().setMaster(master).setAppName("DL4J Spark Example"); 
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 
sparkConf.set("spark.kryo.registrator", "org.nd4j.Nd4jRegistrator"); 
JavaSparkContext sc = new JavaSparkContext(sparkConf); 

dépendances dans le fichier pom:

<dependencies> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>1.6.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.deeplearning4j</groupId> 
      <artifactId>deeplearning4j-core</artifactId> 
      <version>0.8.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.deeplearning4j</groupId> 
      <artifactId>dl4j-spark_2.10</artifactId> 
      <version>0.8.0_spark_1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.nd4j</groupId> 
      <artifactId>nd4j-native-platform</artifactId> 
      <version>0.8.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.nd4j</groupId> 
      <artifactId>nd4j-kryo_2.10</artifactId> 
      <version>0.8.0</version> 
     </dependency> 

     <dependency> 
      <groupId>com.esotericsoftware</groupId> 
      <artifactId>kryo</artifactId> 
      <version>4.0.0</version> 
     </dependency> 
    </dependencies> 

ne peut pas trouver Classe Nd4jRegistrator, mais pourquoi? Lorsque je cours en local cela fonctionne correctement.

Répondre

0

Je suppose que vous n'avez pas configuré votre uberjar correctement? Vous devez vous assurer de tout regrouper. Votre pom semble ok dans l'ensemble.