복붙노트

[HADOOP] AWR EMR의 YARN 로그 집계 - UnsupportedFileSystemException

HADOOP

AWR EMR의 YARN 로그 집계 - UnsupportedFileSystemException

Amazon EMR 클러스터에서 YARN 로그 집계를 사용하기 위해 고심하고 있습니다. 나는이 문서를 다음과 같이 구성하고있다 :

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-debugging.html#emr-plan-debugging-logs-archive

"AWS CLI를 사용하여 Amazon S3에서 로그를 집계하는 방법"섹션.

나는 hadoop-config 부트 스트랩 액션이 다음을 yarn-site.xml에 넣었다.

<property><name>yarn.log-aggregation-enable</name><value>true</value></property>
<property><name>yarn.log-aggregation.retain-seconds</name><value>-1</value></property>
<property><name>yarn.log-aggregation.retain-check-interval-seconds</name><value>3000</value></property>
<property><name>yarn.nodemanager.remote-app-log-dir</name><value>s3://mybucket/logs</value></property>

샘플 작업 (hadoop-examples.jar에서 pi)을 실행하여 ResourceManager의 GUI에서 성공적으로 완료되었는지 확인할 수 있습니다.

심지어 응용 프로그램 ID로 명명 된 s3 : // mybucket / logs 아래에 폴더를 만듭니다. 그러나 폴더가 비어 있습니다. 원사 로그 -applicationID 를 실행하면 stacktrace가 표시됩니다.

14/10/20 23:02:15 INFO client.RMProxy: Connecting to ResourceManager at /10.XXX.XXX.XXX:9022
Exception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3
    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:333)
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:330)
    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:1548)
    at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:330)
    at org.apache.hadoop.fs.FileContext.getFSofPath(FileContext.java:322)
    at org.apache.hadoop.fs.FSLinkResolver.resolve(FSLinkResolver.java:85)
    at org.apache.hadoop.fs.FileContext.listStatus(FileContext.java:1388)
    at org.apache.hadoop.yarn.logaggregation.LogCLIHelpers.dumpAllContainersLogs(LogCLIHelpers.java:112)
    at org.apache.hadoop.yarn.client.cli.LogsCLI.run(LogsCLI.java:137)
    at org.apache.hadoop.yarn.client.cli.LogsCLI.main(LogsCLI.java:199) 

나에게 어떤 의미가 없는가? hdfs dfs -ls s3 : // mybucket /을 실행할 수 있습니다. 내용이 잘 정리되어 있습니다. 컴퓨터가 AWS IAM 역할에서 자격 증명을 얻고 있습니다. 동작 변경없이 core-site.xml에 fs.s3n.awsAccessKeyId 등을 추가하려고했습니다.

어떤 조언을 많이 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.Hadoop은 FileSystem과 AbstractFileSystem의 두 가지 fs 인터페이스를 제공합니다. 대부분 우리는 FileSystem을 사용하고 fs.s3.impl과 같은 구성 옵션을 사용하여 사용자 정의 어댑터를 제공합니다.

    Hadoop은 FileSystem과 AbstractFileSystem의 두 가지 fs 인터페이스를 제공합니다. 대부분 우리는 FileSystem을 사용하고 fs.s3.impl과 같은 구성 옵션을 사용하여 사용자 정의 어댑터를 제공합니다.

    그러나 원사 로그는 AbstractFileSystem 인터페이스를 사용합니다.

    S3에 대한 구현을 찾을 수 있다면 fs.AbstractFileSystem.s3.impl을 사용하여 지정할 수 있습니다.

    fs.AbstractFileSystem.hdfs.impl 등의 예는 core-default.xml을 참조하십시오.

  2. from https://stackoverflow.com/questions/26476728/yarn-log-aggregation-on-aws-emr-unsupportedfilesystemexception by cc-by-sa and MIT license