1

我正在尝试运行 hadoop 的字数问题,因为这是我第一次使用它。我已经使用视频按照说明进行操作,甚至在运行程序之前阅读了很多内容。
但是我在运行hadoop时仍然遇到了异常。这是例外,我得到了:

aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' wordcount /usr/hadoop/input /usr/hadoop/output
16/11/15 11:29:03 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/11/15 11:29:03 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
16/11/15 11:29:06 INFO mapreduce.JobSubmitter: Cleaning up the staging area /tmp/hadoop-yarn/staging/aims/.staging/job_1479184145300_0003
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://localhost:9000/user/aims/wordcount
    at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287)
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229)
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeOldSplits(JobSubmitter.java:328)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:320)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:196)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
    at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:575)
    at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:570)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:570)
    at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:561)
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:870)
    at WordCount.run(WordCount.java:29)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at WordCount.main(WordCount.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

现在我不明白如何解决这个问题。我已经尝试了互联网上与之相关的每个链接,但没有用。
我目前使用的是 Ubuntu 16.04 OS 和 Hadoop 2.7.3
我的 Java 版本是:

openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)

希望听到此异常的解决方案。

4

2 回答 2

1

嗯,文件不存在...

hdfs://localhost:9000/user/aims/wordcount

hdfs-site 或 core-site XML 之一,设置 HDFS 路径,如果您没有编辑任何内容,则/user框的根目录中没有目录。有一个/home/aims目录。

根据您的命令,您正在尝试从 HDFS 路径读取输入/usr/hadoop/input,但错误提示/user/aims/wordcount为 ,这意味着问题是您在 mapreduce 代码中指定的输入目录错误。

于 2016-11-15T06:16:18.787 回答
0

我得到了答案。

aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' wordcount /usr/hadoop/input /usr/hadoop/output

我上面提到的是在 hadoop 上执行 jar 的错误语法。wordcount因为我对我在命令中使用的有点怀疑。甚至异常只是使用它来上升。所以我删除了它并使用了 Hadoop 的目录。它跑了。
以下是正确的执行方式:

aims@aims:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' /myuser/inputdata /myuser/output

这样就行了,我在输出文件夹中得到了输出。

于 2016-11-16T05:14:35.243 回答