2014-10-20 5 views
5

아마존 EMR 클러스터에 YNN 로그 집계를 사용하려고 고민 중입니다. 나는 구성이 문서를 다음 오전 : "는 AWS CLI를 사용하여 아마존 S3에 로그를 집계하기"라는 제목의 섹션에서AWS EMR에 YARN 로그 집계 - UnsupportedFileSystemException

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

.

나는 하둡 설정 부트 스트랩 동작이 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 아래에 폴더를 만듭니다. 그러나 폴더가 비어, 나는 yarn logs -applicationID <applicationId>를 실행하면, 나는 스택 트레이스 얻을 : 나에게 어떤 이해가되지 않습니다이다

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 등을 추가하려고했습니다.

모든 조언을 주시면 감사하겠습니다.

+0

의 예 core-default.xml 참조. 일반적인 설정 옵션 인 _i.e._'fs.s3.impl'과'fs.s3n.impl'은'FileSystem' 인터페이스의 구현을 설정합니다. 그러나 어떤 이유로 원사는'AbstractFileSystem' 인터페이스의 구현을 찾고 있습니다. 'fs.AbstractFileSystem.s3.impl'을 사용하여 설정할 수 있습니다. –

+0

https://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/core-default.xml을 참조하고 "AbstractFileSystem"을 찾으십시오. –

답변

5

하둡은 두 개의 fs 인터페이스 (FileSystemAbstractFileSystem)를 제공합니다. 대부분의 경우 우리는 FileSystem으로 작업하고 fs.s3.impl과 같은 구성 옵션을 사용하여 사용자 지정 어댑터를 제공합니다.

yarn logs 그러나 AbstractFileSystem 인터페이스를 사용합니다.

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

'AbstractFileSystem` 인터페이스와`FileSystem` 인터페이스의 차이가 있음을 표시 등 fs.AbstractFileSystem.hdfs.impl