2

大家好,我正在尝试运行 cloudera 提供的 WordCount.java 示例。我运行了下面的命令,并得到了我放在命令下面的异常。那么您对如何进行有任何建议。我已经完成了cloudera提供的所有步骤。

提前致谢。

hadoop jar ~/Desktop/wordcount.jar org.myorg.WordCount ~/Desktop/input
~/Desktop/output

错误:

ERROR security.UserGroupInformation: PriviledgedActionException
as:root (auth:SIMPLE)
cause:org.apache.hadoop.mapred.InvalidInputException: Input path does
not exist: hdfs://localhost/home/rushabh/Desktop/input
Exception in thread "main"
org.apache.hadoop.mapred.InvalidInputException: Input path does not
exist: hdfs://localhost/home/rushabh/Desktop/input
        at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:194)
        at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:205)
        at org.apache.hadoop.mapred.JobClient.writeOldSplits(JobClient.java:977)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:969)
        at org.apache.hadoop.mapred.JobClient.access$500(JobClient.java:170)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:880)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:833)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:416)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1177)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:833)
        at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:807)
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1248)
        at org.myorg.WordCount.main(WordCount.java:55)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
4

6 回答 6

2

您的输入和输出文件应位于 hdfs。至少输入应该在 hdfs。

使用以下命令:

hadoop jar ~/Desktop/wordcount.jar org.myorg.WordCount hdfs:/input

hdfs:/输出

要将文件从 linux 复制到 hdfs,请使用以下命令:

hadoop dfs -copyFromLocal ~/Desktop/input hdfs:/

并使用以下命令检查您的文件:

hadoop dfs -ls hdfs:/

希望这会有所帮助。

于 2013-04-22T11:02:31.613 回答
1

错误消息说此文件不存在:“hdfs://localhost/home/rushabh/Desktop/input”。

检查该文件是否存在于您告诉它使用的位置。

检查主机名是否正确。您正在使用最有可能解析为环回 IP 地址的“localhost”;例如 127.0.0.1。这始终意味着“此主机”......在您运行代码的机器的上下文中。

于 2012-08-12T01:15:35.890 回答
1

所以我使用以下命令将输入​​文件夹添加到 HDFS

hadoop dfs -put /usr/lib/hadoop/conf input/
于 2012-08-12T01:50:08.947 回答
1

当我尝试运行 wordcount MapReduce 代码时,出现以下错误:

ERROR security.UserGroupInformation: PriviledgedActionException as:hduser cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/user/hduser/wordcount

我试图执行 wordcount MapReduce java 代码,输入和输出路径为 /user/hduser/wordcount 和 /user/hduser/wordcount-output。我刚刚在这条路径之前从 core-site.xml 添加了“fs.default.name”,它运行得很好。

于 2012-10-18T10:28:48.933 回答
1

该错误清楚地表明您的输入路径是本地的。请在 HDFS 而不是本地计算机上指定某些内容的输入路径。我猜

hadoop jar ~/Desktop/wordcount.jar org.myorg.WordCount ~/Desktop/input
~/Desktop/output

需要改为

hadoop jar ~/Desktop/wordcount.jar org.myorg.WordCount <hdfs-input-dir>
<hdfs-output-dir>

注意:要运行 MapReduce 作业,输入目录应该在 HDFS 中,而不是本地。

希望这可以帮助。

于 2013-10-30T02:23:18.837 回答
0

检查 hdfs 中文件的所有权,以确保作业的所有者(root)对输入文件具有读取权限。Cloudera 提供了一个 hdfs 查看器,您可以使用它来查看文件空间;打开 Web 浏览器到 localhost:50075 或 {fqdn}:50075 并单击“浏览文件系统”以查看输入目录和输入文件。检查所有权标志;就像 *nix 文件系统一样。

于 2012-08-22T14:19:00.587 回答