我正在努力为我的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>
我可以运行一个示例作业(
pi
中的hadoop-examples.jar
),并在ResourceManager的GUI上看到它已成功完成。甚至会在
s3://mybucket/logs
下创建一个使用应用程序ID命名的文件夹。但是文件夹是空的,如果我运行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角色获取凭据,我尝试将fs.s3n.awsAccessKeyId等添加到core-site.xml
中,但行为没有改变。任何建议深表感谢。
最佳答案
Hadoop提供了两个fs接口(interface)-FileSystem和AbstractFileSystem。大多数时候,我们使用FileSystem
并使用诸如fs.s3.impl
之类的配置选项来提供自定义适配器。
但是,yarn logs
使用AbstractFileSystem
接口(interface)。
如果可以找到S3的实现,则可以使用fs.AbstractFileSystem.s3.impl
进行指定。
有关fs.AbstractFileSystem.hdfs.impl
等的示例,请参见core-default.xml。
关于hadoop - AWS EMR上的YARN日志聚合-UnsupportedFileSystemException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26476728/