我们正在尝试设置Cloudera 5.5,其中HDFS将在s3上工作,因为我们已经在Core-site.xml中配置了必需属性
fs.s3a.access.key ################ fs.s3a.secret.key ############### fs.default.name s3a://bucket_Name fs.defaultFS s3a://bucket_Name
设置完成后,我们可以从命令中浏览s3存储桶的文件
hadoop fs -ls /
它只显示s3上可用的文件.
但是,当我们启动纱线服务时,JobHistory服务器无法启动以下错误,并且在启动猪作业时,我们遇到相同的错误
PriviledgedActionException as:mapred (auth:SIMPLE) cause:org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a ERROR org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils Unable to create default file context [s3a://kyvosps] org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:154) at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415)
在Internet上进行serching时,我们发现我们需要在core-site.xml中设置以下属性
fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem The implementation class of the S3A Filesystem fs.AbstractFileSystem.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem The FileSystem for S3A Filesystem
设置上述属性后,我们遇到以下错误
org.apache.hadoop.service.AbstractService Service org.apache.hadoop.mapreduce.v2.hs.HistoryFileManager failed in state INITED; cause: java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.(java.net.URI, org.apache.hadoop.conf.Configuration) java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem. (java.net.URI, org.apache.hadoop.conf.Configuration) at org.apache.hadoop.fs.AbstractFileSystem.newInstance(AbstractFileSystem.java:131) at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:157) at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671) at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:334) at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:451) at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:473) at org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils.getDefaultFileContext(JobHistoryUtils.java:247)
这需要的罐子到位,但仍然得到错误任何帮助将是伟大的.提前致谢
更新
我试图删除属性fs.AbstractFileSystem.s3a.impl,但它给了我相同的第一个例外,我之前得到的是
org.apache.hadoop.security.UserGroupInformation PriviledgedActionException as:mapred (auth:SIMPLE) cause:org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a ERROR org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils Unable to create default file context [s3a://bucket_name] org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:154) at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671) at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:334) at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:451) at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:473)
Manjunath Ba.. 6
问题不在于罐子的位置.
问题在于设置:
fs.AbstractFileSystem.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem The FileSystem for S3A Filesystem
不需要此设置.由于这个设置,它在S3AFileSystem
类中搜索以下构造函数,并且没有这样的构造函数:
S3AFileSystem(URI theUri, Configuration conf);
以下异常清楚地告诉它无法找到S3AFileSystem
with URI
和Configuration
参数的构造函数.
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.(java.net.URI, org.apache.hadoop.conf.Configuration)
要解决此问题,请fs.AbstractFileSystem.s3a.impl
从中删除设置core-site.xml
.刚fs.s3a.impl
安装就core-site.xml
可以解决您的问题.
编辑:
org.apache.hadoop.fs.s3a.S3AFileSystem
只是实现FileSystem
.
因此,您不能设置fs.AbstractFileSystem.s3a.impl
to的值org.apache.hadoop.fs.s3a.S3AFileSystem
,因为org.apache.hadoop.fs.s3a.S3AFileSystem
没有实现AbstractFileSystem
.
我正在使用Hadoop 2.7.0,并且在此版本s3A
中未公开AbstractFileSystem
.
有JIRA票证:https://issues.apache.org/jira/browse/HADOOP-11262实现相同,并且Hadoop 2.8.0中提供了修复程序.
假设你的jar暴露s3A
为AbstractFileSystem
,你需要设置以下内容fs.AbstractFileSystem.s3a.impl
:
fs.AbstractFileSystem.s3a.impl org.apache.hadoop.fs.s3a.S3A
这将解决您的问题.
问题不在于罐子的位置.
问题在于设置:
fs.AbstractFileSystem.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem The FileSystem for S3A Filesystem
不需要此设置.由于这个设置,它在S3AFileSystem
类中搜索以下构造函数,并且没有这样的构造函数:
S3AFileSystem(URI theUri, Configuration conf);
以下异常清楚地告诉它无法找到S3AFileSystem
with URI
和Configuration
参数的构造函数.
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.(java.net.URI, org.apache.hadoop.conf.Configuration)
要解决此问题,请fs.AbstractFileSystem.s3a.impl
从中删除设置core-site.xml
.刚fs.s3a.impl
安装就core-site.xml
可以解决您的问题.
编辑:
org.apache.hadoop.fs.s3a.S3AFileSystem
只是实现FileSystem
.
因此,您不能设置fs.AbstractFileSystem.s3a.impl
to的值org.apache.hadoop.fs.s3a.S3AFileSystem
,因为org.apache.hadoop.fs.s3a.S3AFileSystem
没有实现AbstractFileSystem
.
我正在使用Hadoop 2.7.0,并且在此版本s3A
中未公开AbstractFileSystem
.
有JIRA票证:https://issues.apache.org/jira/browse/HADOOP-11262实现相同,并且Hadoop 2.8.0中提供了修复程序.
假设你的jar暴露s3A
为AbstractFileSystem
,你需要设置以下内容fs.AbstractFileSystem.s3a.impl
:
fs.AbstractFileSystem.s3a.impl org.apache.hadoop.fs.s3a.S3A
这将解决您的问题.