我正在尝试对存储在amazons3上的bucket中的文本文件运行map reduce wordcount作业。我已经为mapreduce框架设置了与amazon通信所需的所有身份验证,但是我继续运行这个错误。知道为什么会这样吗?
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)
1条答案
按热度按时间k97glaaz1#
你必须替换协议
s3
由s3n
. 这是两个具有不同属性的不同文件系统:s3n是s3本机文件系统:用于在s3上读写常规文件的本机文件系统。这个文件系统的优点是您可以访问s3上用其他工具编写的文件。相反,其他工具可以访问使用hadoop编写的文件。缺点是s3对文件大小施加了5gb的限制。因此,它不适合替代hdfs(hdfs支持非常大的文件)。
s3是块文件系统:一个由s3支持的基于块的文件系统。文件以块的形式存储,就像它们在hdfs中一样。这允许高效地执行重命名。此文件系统要求为文件系统指定一个存储桶—不应使用包含文件的现有存储桶,也不应将其他文件写入同一个存储桶。这个文件系统存储的文件可以大于5gb,但它们不能与其他s3工具互操作。
(来源)
在你的情况下,你的桶可能正在使用
s3n
文件系统,我相信这是默认的,我使用的大多数bucket也是s3n
. 所以你应该用s3n://name-bucket/test.txt