2016-11-15 36 views
1

我试图运行hadoop这个wordcount问题,因为它是我第一次使用它。我遵循使用视频的说明,甚至在运行该程序之前阅读了许多内容。
但是我仍然在运行hadoop时遇到了异常。这里是例外,我得到了:Hadoop异常。

[email protected]:~/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操作系统和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) 

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

回答

0

我得到了答案。

[email protected]:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' wordcount /usr/hadoop/input /usr/hadoop/output 

上面提到的是在hadoop上执行jar的错误语法。因为我对该命令中使用的wordcount有点怀疑。而且即使只有这个例外才会出现。所以我删除它并使用Hadoop的目录。它跑了。
下面是执行的正确方法:

[email protected]:~/hadoop/hadoop$ bin/hadoop jar '/home/aims/Desktop/WordCount.jar' /myuser/inputdata /myuser/output 

这样的工作,我得到了我的输出文件夹输出。

1

好了,文件不存在...

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

其中HDFS站点或核心现场XML的,集HDFS路径,如果你没有任何编辑,然后,有在您的方框的根目录中没有/user目录。有一个/home/aims目录。

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

+0

谢谢你的回复,我的朋友。是的,我没有对文件做任何修改。实际上,我已经在bitnami网站上使用安装程序安装了Hadoop,并且我认为安装程序会进行适当运行命令所需的所有必要配置。请让我知道是否有任何解决方案。如果有请为我编辑答案。我会很高兴收到你的来信。 Thankx –

+0

如果您确实使用了Ambari,那么您不应该在第一节节点选择器中输入“localhost”。使用完整的主机名称。所有的端口都应该在VM等网络问题中打开。如果一切都失败,请下载Cloudera quickstart虚拟机或Hortonworks沙箱 –

+0

不,我没有使用Ambari。我只是一个新用户,并使用bitnami的安装程序安装了Hadoop。我试图从终端运行程序。希望这对你有所帮助。 –

相关问题