【问题标题】:Not a Valid Jar When Running Hadoop Job运行 Hadoop 作业时不是有效的 Jar
【发布时间】:2014-11-02 11:01:57
【问题描述】:

我想运行 WordCount 示例。

在 Eclipse 中它运行正确。在输出文件夹中存在输出文件。

我做了一个WordCount的jar文件,想通过命令运行一下

hadoop jar WordCount.jar /Projects/input /Projects/output

它给了我错误

Not a valid JAR: /Projects/WordCount.jar

hdfs dfs -ls /Projects的结果

Found 3 items
-rw-r--r-- 1 hduser supergroup 3418 2014-11-02 15:38 /Projects/WordCount.jar
drwxr-xr-x - hduser supergroup 0 2014-11-02 14:13 /Projects/input
drwxr-xr-x - hduser supergroup 0 2014-11-02 14:16 /Projects/output

这也给了我同样的错误

  hadoop jar /Projects/WordCount.jar wordPackage.WordCount  /Projects/input /Projects/output

 Not a valid JAR: /Projects/WordCount.jar

如何解决这个错误。

我已经运行了 tvf 命令它给出了这个输出

 jar -tvf /home/hduser/Desktop/Files/WordCount.jar

  60 Sun Nov 02 16:10:10 PKT 2014 META-INF/MANIFEST.MF
 1895 Sun Nov 02 14:02:38 PKT 2014 wordPackage/WordCount.class
 1295 Sun Nov 02 14:02:38 PKT 2014 wordPackage/WordCount.java
 2388 Sun Nov 02 14:02:06 PKT 2014 wordPackage/WordReducer.class
 707 Sun Nov 02 14:02:06 PKT 2014 wordPackage/WordReducer.java
 2203 Sun Nov 02 14:02:08 PKT 2014 wordPackage/WordMapper.class
 713 Sun Nov 02 14:02:06 PKT 2014 wordPackage/WordMapper.java
 16424 Sun Nov 02 13:50:00 PKT 2014 .classpath
 420 Sun Nov 02 13:50:00 PKT 2014 .project

【问题讨论】:

  • 我认为您错过了提供 MainClass 文件,该文件应该类似于 $ bin/hadoop jar WordCount.jar org.myorg.WordCount /Projects/input /Projects/output
  • 我提供了主类。我已经编辑了您可以在其中看到的问题。
  • 您用于编译和构建jar的Hadoop版本应该与您要运行hadoop作业的环境版本相同(尝试命令:“hadoop version”)。

标签: hadoop


【解决方案1】:

使用hadoop命令执行相同的jar时,不能将jar保存在HDFS中,jar应该在本地路径中可用

如果 jar 无法运行,请尝试以下操作(需要指定 package.mainclass)

hadoop jar /home/hduser/Desktop/Files/WordCount.jar wordPackage.WordCount /Projects/input /Projects/output

如果jar是可运行的,可以使用以下

hadoop jar /home/hduser/Desktop/Files/WordCount.jar /Projects/input /Projects/output

如果问题依旧,需要在eclipse中重新构建这个jar(WordCount.jar)

【讨论】:

  • 是的,jar 不应该在 HDFS 中。
【解决方案2】:

尽管如果问题仍然存在,请再次重建您的 jar,请确保您在运行命令之前已授予 +x(execution chmod 755) 权限。就我而言,这就是问题的原因。 命令帮助: chmod +x jarname.jar

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。但就我而言,我所做的是编写了引用 hadoop 1.x 库的 java 代码,并尝试使用 2.x 执行它。最初,我在终端中遇到了同样的错误。然后我尝试导航到我的 jar 文件所在的路径。有效。

    也许您实际上可以尝试以下方法:(导航到 jar 文件路径后)

    hadoop jar WordCount.jar  wordPackage.WordCount /Projects/input /Projects/output
    

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多