2012-12-12 49 views
3

在过去的几天里,我测试了多个版本的Hadoop(1.0.1,1.0.2,1.1.4)。在每种情况下,我可以使用下面的命令行容易运行字计数程序:Hadoop的WordCount在命令行运行,但不是从Eclipse运行的。

hadoop jar hadoop-examples-1.1.1.jar wordcount /input output 

由于上述命令执行successfuly,然后我假设我的Hadoop配置是正确的。但是当我尝试使用来自Eclipse的完全相同的输入来运行程序时,我得到每个单一版本的以下错误消息。 任何人都可以给我为什么它不会从Eclipse运行的原因吗?

Dec 12, 2012 2:19:41 PM org.apache.hadoop.util.NativeCodeLoader <clinit> 
WARNING: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
Dec 12, 2012 2:19:41 PM org.apache.hadoop.mapred.JobClient copyAndConfigureFiles 
WARNING: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String). 
****file:/tmp/wordcount/in 
Dec 12, 2012 2:19:42 PM org.apache.hadoop.mapred.JobClient$2 run 
INFO: Cleaning up the staging area file:/tmp/hadoop-root/mapred/staging/root-41981592/.staging/job_local_0001 
Dec 12, 2012 2:19:42 PM org.apache.hadoop.security.UserGroupInformation doAs 
SEVERE: PriviledgedActionException as:root cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/input 
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/input 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:235) 
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:252) 
    at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:962) 
    at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:979) 
    at org.apache.hadoop.mapred.JobClient.access$600(JobClient.java:174) 
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:897) 
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:415) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093) 
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) 
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:500) 
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530) 
    at com.igalia.wordcount.WordCount.run(WordCount.java:94) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
    at com.igalia.wordcount.App.main(App.java:28) 
+0

'/ input'通常映射到文件系统的根目录。它真的不可能存在。你能证实有这个文件夹吗?例如。通过'ls -l/input/*' –

+0

也检查你在eclipse App中正确配置了HDFS,所以它找到了'hdfs:/ input'而不是'file:/ input'。 –

+0

我检查了/ input存在。另外,我尝试了所有类型的路径,为了确保路径正确,我转到HDFS页面(http:// localhost:50070/dfshealth.jsp)并从那里复制路径。但是,您提到“在您的Eclipse应用程序中配置的HDFS正确;”我该怎么做呢?我正在运行Hadoop下载的标准WordCount。 –

回答

4

在你的工作通过你的配置添加以下两行赤贫:

Configuration.addResource(new Path("path-to-your-core-site.xml file")); 
Configuration.addResource(new Path("path-to-your-hdfs-site.xml file")); 
+0

谢谢塔里克。完美工作。 –

+0

太棒了。我们需要告诉工作去哪里寻找namenode和datanode。 – Tariq

+0

好.. :)为我工作得很好 – minhas23

0

在Windows 7上的Hadoop-2.2.0,我添加了以下行,它解决了问题(注: :我的Hadoop主页是:C:\ MyWork \ MyProjects \ Hadoop \ hadoop-2.2.0)

配置conf = new Configuration(); (新路径(“C:\ MyWork \ MyProjects \ Hadoop \ hadoop-2.2.0 \ etc \ hadoop \ core-site.xml”)); (新路径(“C:\ MyWork \ MyProjects \ Hadoop \ hadoop-2.2.0 \ etc \ hadoop \ hdfs-site.xml”));

相关问题