2012-08-12 56 views
2

嘿傢伙,所以我試圖運行由cloudera提供的WordCount.java示例。我運行了下面的命令,並獲得了我放在命令下面的異常。所以你有什麼建議如何進行。我已經完成了cloudera提供的所有步驟。需要幫助運行由Cloudera提供的WordCount.java

在此先感謝。

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) 

回答

1

所以我使用下面的命令

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

該錯誤消息說,該文件不存在: 「HDFS://本地主機的/ home/rushabh /桌面/輸入」。

檢查文件確實存在於您告訴它使用的位置。

檢查主機名是否正確。您正在使用最可能解析爲回送IP地址的「localhost」;例如127.0.0.1。這總是意味着「這個主機」...在機器的上下文中,你是運行代碼

0

檢查的文件在HDFS的所有權,以確保作業(根)的擁有者在輸入文件中讀取的權限添加的輸入文件夾到HDFS。 Cloudera提供了一個hdfs查看器,您可以使用它查看文件空間;打開Web瀏覽器到localhost:50075或{fqdn}:50075,然後單擊「瀏覽文件系統」查看Input目錄和輸入文件。檢查所有權標誌;就像* nix文件系統一樣。

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

我試圖用作爲/用戶/ hduser /單詞計數輸入和輸出路徑,以執行單詞計數MapReduce的Java代碼:作爲

1

當我試圖運行單詞計數的MapReduce代碼,我正在錯誤和/ user/hduser/wordcount-output。在這個路徑之前,我剛剛從core-site.xml添加了'fs.default.name',並且它完美運行。

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:/ 

希望這會有所幫助。

+0

「Hadoop dfs」已棄用,現在純粹用「hdfs dfs」完成。 – Xiaokun 2015-11-19 15:43:23

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,不是本地的。

希望這會有所幫助。