【问题标题】:Can't access a public S3 bucket from Hadoop无法从 Hadoop 访问公共 S3 存储桶
【发布时间】:2012-06-22 21:47:28
【问题描述】:

我正在使用 Hadoop 处理 Google Books ngram,这些 ngram 在 Amazon S3 中存储为 Hadoop 序列文件。

Hadoop 包括从 S3 读取的功能(使用 S3 存储桶作为虚拟“文件系统”),只需在文件名上指定 s3:// 或 s3n:// 协议即可。

很遗憾,它要求您设置 AWS 访问密钥和密钥。由于我想读取的存储桶是公开的,因此我没有任何密钥可供使用。如果我使用自己的密钥,则无法从 ngrams 存储桶中读取数据(因为它不属于我的帐户)。

如何使用存储在 Hadoop 的公共 S3 存储桶中的文件,而无需自己重新托管该文件(这会变得非常昂贵,因为有几 TB 的数据)?

【问题讨论】:

  • 你有没有想过这个?
  • @AlexDean,我最终放弃并编写了自己的 RecordReader,它通过 HTTP 吞入文件中。我从来没有让默认阅读器与 S3 一起工作。
  • 啊,不好意思,谢谢你让我知道@levand。我发现即使是 S3DistCp 也有这个限制,这看起来很愚蠢。

标签: hadoop amazon-s3


【解决方案1】:

如果数据是公开的,您将不需要 AWS 访问或密钥,因为您不会使用 s3n:// 变体。相反,您将使用以 http://*.s3.amazonaws.com/* 开头的公共 URL 变体

如果公共 URL 不可用,您可以尝试为每个 AWS 访问密钥和密钥传递一个空白字符串,然后看看会发生什么

【讨论】:

  • 不,不幸的是,Hadoop 无法像使用 S3 那样将其“文件系统”挂载在 HTTP 协议上。
  • 我注意到这个页面链接在亚马逊页面底部的 NGrams 数据集。它使用 HIVE 处理该数据集。 HIVE 只是一个位于 Hadoop 之上的框架,它使用与 hadoop 相同的凭据。 aws.amazon.com/articles/5249664154115844
  • 看起来这确实是一个迄今为止尚未解决的限制。有 JIRA 票吗?
  • 这里面临同样的问题。直接使用jets3t解决了这个问题,没有那么优雅。
猜你喜欢
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2015-08-23
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多