我的端点服务器现在可以在s3a文件系统中正常工作,现在我想支持s3n://s3://
有人对实现这一目标有什么建议吗?

最佳答案

  • 无需为任何X值设置fs.s3X.impl。它在hadoop-common中的core-default.xml文件中预定义。这条“必须声明”的规则只是那些从未尝试过其他方法的人所遗忘的迷信。
  • 在hadoop-2.7发行时(通常是Spark bundle 的版本),
  • S3n已经过时了,并且自hadoop-2.6发行以来就没有任何维护。由于预期每个人都已迁移,因此它已从最新版本中删除。
  • 它具有基本限制,包括
  • 对大文件的seek()操作的恶劣处理(现在,基础库在每次向后查找时都读取到文件末尾。这会降低ORC / Parquet列数据的性能。
  • 不支持v4身份验证协议(protocol),因此不支持AWS法兰克福,首尔,伦敦等地。
  • 不支持加密
  • 不支持恢复瞬时故障
  • 不支持大文件的并行和增量上传。当仍在生成输出时,S3A一次将文件写入一个块

  • 由于这些问题及其过时的事实,在ASF JIRA上与s3n相关的所有错误都以WONTFIX的形式关闭。

    从s3n移至s3a。您的生活会更好。

    要知道当您使用s3a时,AWS库的版本和所有hadoop- * JAR必须同步。 hadoop- * JAR彼此依赖,并且aws- * JAR随着时间的推移变得足够脆弱,以至于hadoop每次升级都需要进行认真的重新测试,经常更改API,针对AWS开发工具包SDK团队提交的错误,等等。只会创建异常的堆栈跟踪,并以INVALID(无效)关闭:“那么不要这样做”。

    现在,如果您真的想测试s3n支持,
  • checkout hadoop source tree以获取您希望通过
  • 运行 Spark 的hadoop版本
  • 按照testing instructions对端点测试s3a和s3n。
  • 特别是testing against non-AWS S3 services的位。
  • 为了获得最佳的s3a测试,请检查hadoop中继并也运行这些测试。

  • 如前所述,s3n的问题不会得到解决。你的家庭作业。也许是S3A的,但是您必须证明这是s3a库本身的错误。

    10-08 01:47