【问题标题】:hadoop:Not able to run a mapreduce jobhadoop:无法运行 mapreduce 作业
【发布时间】:2017-01-23 14:49:32
【问题描述】:

我在java中制作了3个文件,制作了一个jar文件并写了这一行来执行MapReduce代码:

hadoop jar /home/xyz/Documents/hadoop-2.7.3/abc1.jar woq.WordCount /test/vocab.txt /test/output3

jar 文件名为 abc1.jarwoq 是包名,WordCount 是定义作业的主类mapreduce 代码。执行此行时,显示以下错误:

Exception in thread "main" java.lang.ClassNotFoundException: woq.WordCount
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

关于我在执行上述行时缺少什么建议?

grep 命令的输出(以 cmets 为单位):

   Sun Jan 22 21:04:20 IST 2017 WordCountMapper.class
   Sun Jan 22 21:04:20 IST 2017 WordCountReducer.class
   Sun Jan 22 21:04:20 IST 2017 WordCount.class

【问题讨论】:

  • jar -tvf abc1.jar列出你的jar中的类,它应该给你WordCount类的包层次结构。
  • 它提供了 5 个类。其中 3 个是我编译的类和 2 个附加文件
  • 你能 grep WordCount 的输出吗?
  • 如果这个命令没有运行,我怎么能看到它的输出?
  • 我的意思是,jar -tvf abc1.jar | grep -i 'WordCount'

标签: java hadoop mapreduce hdfs distributed-computing


【解决方案1】:

来自cmets,

类文件中似乎有package woq; 行,但没有实际的目录结构。您可以创建父目录woq 或从文件中删除该行并重新编译。

如果删除该行,您可以像这样提交作业

hadoop jar /home/xyz/Documents/hadoop-2.7.3/abc1.jar WordCount /test/vocab.txt /test/output3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2013-01-16
    相关资源
    最近更新 更多