在EMR中访问S3中的数据

时间:2014-01-14 22:41:10

标签: hadoop amazon-s3 amazon-emr emr

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

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

  1. 读取文件时,如何拆分并发送到每个数据节点?
  2. 是否由主节点/作业跟踪器控制数据节点的分配?
  3. 将文件复制到HDFS然后访问它会更有效吗?

1 个答案:

答案 0 :(得分:0)

  1. 通常,在拆分时从hdfs和s3读取之间没有区别。 S3FileSystem 类(s3输入的商店类)将使用公共位置和偏移量来获取s3文件块(使用HTTP请求,包括头部中的位置,偏移信息)。 更多细节,您可以在hadoop发布中查看代码。

  2. 是的,与HDFS程序相同。

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

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