2017-03-27 3 views
0

Ich übergebe Remote-Funke-Jobs an den Hadoop-Cluster. Aber unten Fehlermeldung helfen mir, dies zu lösen.Ausnahme im Thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream 
    at org.apache.spark.Logging$.<init>(Logging.scala:162) 
    at org.apache.spark.Logging$.<clinit>(Logging.scala) 
    at org.apache.spark.Logging$class.initializeIfNecessary(Logging.scala:103) 
    at org.apache.spark.Logging$class.log(Logging.scala:50) 
    at org.apache.spark.deploy.yarn.ApplicationMaster$.log(ApplicationMaster.scala:635) 
    at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:649) 
    at org.apache.spark.deploy.yarn.ExecutorLauncher$.main(ApplicationMaster.scala:674) 
    at org.apache.spark.deploy.yarn.ExecutorLauncher.main(ApplicationMaster.scala) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 8 more 

Antwort

0

Das Problem war mit dem Klassenpfad.

Ich habe unten Code der Anwendung hinzugefügt und es löste das Problem:

.set("spark.hadoop.yarn.application.classpath", 
            "/etc/hadoop/conf," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop/lib/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-hdfs/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-hdfs/lib/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-mapreduce/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-mapreduce/lib/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-yarn/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hadoop-yarn/lib/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/spark/*," 
              + "/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/spark/lib/*") 
0

Es sieht aus wie Sie einen Zündverteiler verwenden, die für die Benutzer bereitgestellte Hadoop vorgefertigte war. Versuchen Sie, eine Distribution mit dem Namen "Pre-built for Hadoop 2.x oder höher" herunterzuladen, wobei x Ihre vorhandene Hadoop-Cluster-Version ist, und prüfen Sie, ob sie für Sie geeignet ist.

+0

ich CDH Cluster bin mit. Ich habe den Funken mit den Paketen installiert. –

+0

Tut mir leid, habe keine Erfahrung mit CDH, aber ich hatte denselben Fehler in meinem eigenständigen Spark-Cluster, der wie oben beschrieben erfolgreich gelöst wurde. – Roman

0

dieses Problem zu beheben mit dem folgenden Befehl ausführen Funke:

/usr/local/spark/bin/spark-shell 
Verwandte Themen