我正在尝试运行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)
现在我不明白如何解决这个问题。我试过互联网上所有与之相关的链接,但没有用。
我目前正在使用ubuntu16.04操作系统和hadoop2.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)
希望听到这个例外的解决办法。
2条答案
按热度按时间xxls0lw81#
我知道答案了。
我上面提到的是在hadoop上执行jar的错误语法。因为我有点怀疑
wordcount
我在命令里用的。即使是例外情况也在上升。所以我删除了它并使用了hadoop的目录。它跑了。以下是正确的执行方法:
这样就成功了,我在output文件夹中得到了我的输出。
c86crjj02#
文件不存在。。。
其中一个hdfs站点或核心站点xml设置hdfs路径,如果您没有编辑任何内容,则没有
/user
在你的盒子的根目录。有一个/home/aims
目录。根据您的命令,您正在尝试从hdfs路径读取输入
/usr/hadoop/input
,但错误是/user/aims/wordcount
,这意味着问题是您在mapreduce代码中指定的输入目录错误。