【问题标题】:Accessing Data in S3 within EMR在 EMR 中访问 S3 中的数据
【发布时间】:2014-01-14 22:41:10
【问题描述】:

我有一个存储在 S3 中的大型文本文件,可以在多节点集群上使用“s3:///folder/folder/file”格式直接从 EMR(比如 PIG)中访问它。

我的问题是关于向数据节点传输数据的效率。我相信 S3 中的数据以类似于 HDFS 的方式存储在块中。

  1. 读取文件时,如何拆分并发送到各个数据节点?
  2. 数据节点的分配是否由 Master Node/Job Tracker 控制?
  3. 将文件复制到 HDFS 中然后访问它是否更有效?

【问题讨论】:

    标签: hadoop amazon-s3 amazon-emr emr


    【解决方案1】:
    1. 通常在拆分时从 hdfs 和 s3 读取没有区别。 S3FileSystem 类(这是 s3 输入的存储类)将使用公共位置和偏移量来获取 s3 文件块(使用 HTTP 请求,包括位置,标头中的偏移量信息)。 更多细节,你可以查看hadoop版本中的代码。

    2. 是的,和HDFS过程一样。

    3. 这取决于工作流程。如果您阅读一次,多次查询,您可能希望将文件复制到 HDFS,这将受益于本地 I/O。否则,您可以只使用 s3 作为存储。 S3 更稳定,具有无限存储空间,尽管它可能比 HDFS 慢一点。 (我知道 Netflix 在很多情况下都使用 s3 作为 emr 存储,正如他们所说的那样工作得很好)

    PS:S3DistCp可以帮助您在HDFS和S3之间进行快速复制。

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2012-03-04
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多