【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/hadoop/fs/FSDataInputStream
【发布时间】:2017-06-07 23:09:14
【问题描述】:

我正在向 Hadoop 集群提交远程 Spark 作业。但是低于错误消息可以帮助我解决这个问题。

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

【问题讨论】:

    标签: hadoop apache-spark


    【解决方案1】:

    问题出在类路径上。

    我在应用程序中添加了以下代码,它解决了这个问题:

    .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/*")
    

    【讨论】:

      【解决方案2】:

      您使用的是为用户提供的 Hadoop 预先构建的 Spark 分发版。尝试下载“为 Hadoop 2.x 或更高版本预构建”的发行版,其中 x 是您现有的 Hadoop 集群版本,看看它是否适合您。

      【讨论】:

      • 我正在使用 CDH 集群。我已经使用包裹安装了火花。
      • 抱歉,没有使用 CDH 的经验,但我在独立的 Spark 集群上遇到了同样的错误,如上所述已成功解决。
      【解决方案3】:

      要解决此问题,请使用以下命令运行 spark:

      /usr/local/spark/bin/spark-shell
      

      【讨论】:

        猜你喜欢
        • 2020-02-08
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-01
        相关资源
        最近更新 更多