【问题标题】:YARN log aggregation on AWS EMR - UnsupportedFileSystemExceptionAWS EMR 上的 YARN 日志聚合 - UnsupportedFileSystemException
【发布时间】:2014-12-16 02:08:41
【问题描述】:

我正在努力为我的 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 上成功完成。

它甚至会在s3://mybucket/logs 下创建一个以应用程序 ID 命名的文件夹。但是文件夹是空的,如果我运行yarn logs -applicationID &lt;applicationId&gt;,我会得到一个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 角色获取凭证,我尝试将 fs.s3n.awsAccessKeyId 等添加到 core-site.xml,但行为没有变化。

非常感谢任何建议。

【问题讨论】:

  • 看来AbstractFileSystem接口和FileSystem接口是有区别的。通常的配置选项 ie fs.s3.implfs.s3n.impl 配置 FileSystem 接口的实现,但由于某种原因,yarn 正在寻找 AbstractFileSystem 接口的实现,可以使用 @ 进行配置987654338@.
  • 查看hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/… 并查找“AbstractFileSystem”。

标签: hadoop hadoop-yarn emr amazon-emr hadoop2


【解决方案1】:

Hadoop 提供了两个 fs 接口 - FileSystemAbstractFileSystem。大多数时候,我们使用FileSystem 并使用fs.s3.impl 等配置选项来提供自定义适配器。

但是,yarn logs 使用 AbstractFileSystem 接口。

如果您可以找到 S3 的实现,您可以使用 fs.AbstractFileSystem.s3.impl 指定它。

有关fs.AbstractFileSystem.hdfs.impl 等的示例,请参阅core-default.xml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2011-06-07
    • 2016-08-23
    • 2015-08-10
    相关资源
    最近更新 更多