需要帮助运行Cloudera提供的WordCount.java

时间:2012-08-12 01:05:15

标签: java hadoop cloudera

嘿伙计们,所以我正在尝试运行由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)

6 个答案:

答案 0 :(得分:2)

您的输入和输出文件应位于hdfs。 Atleast输入应为hdfs。

使用以下命令:

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

HDFS:/输出

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

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

并使用以下方法检查您的文件:

hadoop dfs -ls hdfs:/

希望这会有所帮助。

答案 1 :(得分:1)

错误消息显示此文件不存在:" hdfs:// localhost / home / rushabh / Desktop / input"。

检查文件是否存在于您已告知其使用的位置。

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

答案 2 :(得分:1)

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

hadoop dfs -put /usr/lib/hadoop/conf input/

答案 3 :(得分: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'

答案 4 :(得分: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,而不是本地。

希望这有帮助。

答案 5 :(得分:0)

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