[HADOOP] HDFS 형식 로컬 디스크를 s3 오류로 바꾸기 (org.apache.hadoop.service.AbstractService)
HADOOPHDFS 형식 로컬 디스크를 s3 오류로 바꾸기 (org.apache.hadoop.service.AbstractService)
우리는 Coresite.xml에서 필수 속성을 이미 구성했기 때문에 HDFS가 s3에서만 작동하는 Cloudera 5.5를 설정하려고합니다.
<property>
<name>fs.s3a.access.key</name>
<value>################</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>###############</value>
</property>
<property>
<name>fs.default.name</name>
<value>s3a://bucket_Name</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>s3a://bucket_Name</value>
</property>
그것을 설정 한 후 우리는 s3 bucket에 대한 파일을 명령에서 찾아 볼 수있었습니다.
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)
인터넷에서 검색 할 때 우리는 core-site.xml에서도 다음과 같은 속성을 설정해야한다는 것을 알게되었습니다.
<property>
<name>fs.s3a.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
<description>The implementation class of the S3A Filesystem</description>
</property>
<property>
<name>fs.AbstractFileSystem.s3a.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
<description>The FileSystem for S3A Filesystem</description>
</property>
위의 속성을 설정 한 후 우리는 다음과 같은 오류가 발생합니다.
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.<init>(java.net.URI, org.apache.hadoop.conf.Configuration)
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(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)
해결법
-
==============================
1.문제는 항아리의 위치와 관련이 없습니다.
문제는 항아리의 위치와 관련이 없습니다.
설정에 문제가 있습니다.
<property> <name>fs.AbstractFileSystem.s3a.impl</name> <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value> <description>The FileSystem for S3A Filesystem</description> </property>
이 설정은 필요하지 않습니다. 이 설정으로 인해 S3AFileSystem 클래스에서 다음 생성자를 검색 중이며 해당 생성자가 없습니다.
S3AFileSystem(URI theUri, Configuration conf);
다음 예외는 URI와 Configuration 매개 변수를 가진 S3AFileSystem에 대한 생성자를 찾을 수 없다는 것을 분명히 알려줍니다.
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(java.net.URI, org.apache.hadoop.conf.Configuration)
이 문제를 해결하려면 core-site.xml에서 fs.AbstractFileSystem.s3a.impl 설정을 제거하십시오. core-site.xml에 fs.s3a.impl 설정을 지정하면 문제가 해결됩니다.
편집하다: org.apache.hadoop.fs.s3a.S3AFileSystem은 단지 FileSystem을 구현합니다.
따라서 org.apache.hadoop.fs.s3a.S3AFileSystem은 AbstractFileSystem을 구현하지 않으므로 fs.AbstractFileSystem.s3a.impl의 값을 org.apache.hadoop.fs.s3a.S3AFileSystem으로 설정할 수 없습니다.
Hadoop 2.7.0을 사용하고 있으며이 버전에서 s3A는 AbstractFileSystem으로 노출되지 않습니다.
JIRA 티켓을 https://issues.apache.org/jira/browse/HADOOP-11262에서 구현하면 Hadoop 2.8.0에서 사용할 수 있습니다.
당신의 항아리가 s3A를 AbstractFileSystem으로 노출했다고 가정하면 fs.AbstractFileSystem.s3a.impl에 대해 다음을 설정해야합니다.
<property> <name>fs.AbstractFileSystem.s3a.impl</name> <value>org.apache.hadoop.fs.s3a.S3A</value> </property>
그것은 당신의 문제를 해결할 것입니다.
from https://stackoverflow.com/questions/34314904/replace-hdfs-form-local-disk-to-s3-getting-error-org-apache-hadoop-service-abst by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지의 정규 표현식 (0) | 2019.08.04 |
---|---|
[HADOOP] "클라이언트"는 Hadoop / HDFS의 의미가 정확히 무엇입니까? (0) | 2019.08.04 |
[HADOOP] Java를 통한 Apache 드릴 연결 (0) | 2019.08.04 |
[HADOOP] 튜플을 가방처럼 평평하게 만드십시오. (0) | 2019.08.04 |
[HADOOP] NameNode 주소의 URI가 잘못되었습니다. (0) | 2019.08.04 |