从 S3 加载 AWS EMR
Posted
技术标签:
【中文标题】从 S3 加载 AWS EMR【英文标题】:AWS EMR loading from S3 【发布时间】:2013-06-01 21:41:09 【问题描述】:当使用 S3 存储桶作为输入源创建新的 EMR 作业时,数据是否会自动从 S3 复制到节点上的 HDFS 中?还是数据仅保留在 S3 中并在 map reduce 作业需要时读取?
我的印象是后者;但是,如果数据存储在 S3 中并在预置的 EC2 实例上完成处理,这是否不违反 map reduce 的基本原则:对数据进行本地处理?与更传统的系统相反:将数据移动到处理所在的位置。
在给定一个合理的大数据集(例如 1PB)的情况下,这种方法的相对含义是什么?集群启动时间是否更长?
【问题讨论】:
【参考方案1】:你有两个选择。您可以直接从 Amazon S3 流式传输数据,也可以先将其复制到 HDFS,然后在本地进行处理。如果您只打算读取一次数据,则第一种方法很好。如果您的计划是多次查询相同的输入数据,那么您可能希望先将其复制到 HDFS。
是的,通过使用 S3 作为 MapReduce 的输入,您将失去数据局部性优化。此外,如果您的计划是使用 S3 作为 HDFS 的替代品,我建议您使用 S3 Block FileSystem
而不是 S3 Native FileSystem
,因为它对文件大小施加了 5GB 的限制。
HTH
【讨论】:
AWS 不鼓励使用 s3bfs(块存储文件系统):docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/…以上是关于从 S3 加载 AWS EMR的主要内容,如果未能解决你的问题,请参考以下文章
无法从 S3 存储桶(镶木地板文件)将数据加载到 EMR 上的猪中