2013-01-20 7 views
3

我想運行地圖減少WordCount作業上的文本文件,我已經存儲在亞馬遜s3上的存儲桶中。我已經設置了所有必需的地圖縮減框架所需的身份驗證,以便與亞馬遜通信,但我一直在運行這個錯誤。任何想法爲什麼發生這種情況?需要幫助運行地圖減少存儲在亞馬遜s3上的數據的WordCount作業

13/01/20 13:22:15 ERROR security.UserGroupInformation: 
PriviledgedActionException as:root 
cause:org.apache.hadoop.mapred.InvalidInputException: Input path does 
not exist: s3://name-bucket/test.txt 
Exception in thread "main" 
org.apache.hadoop.mapred.InvalidInputException: Input path does not 
exist: s3://name-bucket/test.txt 
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:197) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:208) 
    at org.apache.hadoop.mapred.JobClient.writeOldSplits(JobClient.java:989) 
    at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:981) 
    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:416) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) 
    at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:824) 
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1261) 
    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:156) 
+0

你確定你的輸入存在,你把正確的桶名稱?你有沒有嘗試用「s3n」而不是「s3」? –

+0

謝謝你的工作,我把s3替換成輸入url和hadoop-site.xml中的s3n。你知道爲什麼這個工作,只是S3沒有? – anonymous123

+0

我在答案中添加了更多詳細信息。 –

回答

7

你確實有通過s3n更換協議s3。這是2頁不同的文件系統具有不同的屬性:

  • S3N是S3本地文件系統:閱讀和寫作S3常規文件本地文件系統。這個文件系統的優點是你可以訪問使用其他工具編寫的S3上的文件。相反,其他工具可以訪問使用Hadoop編寫的文件。缺點是S3強加的文件大小限制爲5GB。由於這個原因,它不適合作爲HDFS的替代品(它支持非常大的文件)。
  • s3是塊文件系統:S3支持的基於塊的文件系統。文件存儲爲塊,就像在HDFS中一樣。這允許有效實現重命名。這個文件系統要求你爲文件系統專用一個存儲桶 - 你不應該使用包含文件的現有存儲桶,或者將其他文件寫入同一個存儲桶。該文件系統存儲的文件可能大於5GB,但不能與其他S3工具互操作。

source

在你的情況你的水桶很可能使用s3n文件系統,我相信這是默認的,最讓我用水桶也s3n。所以你應該使用s3n://name-bucket/test.txt