1

有一些大型数据集(25gb+,可在 Internet 上下载)我想使用 Amazon EMR 进行尝试。不是将数据集下载到我自己的计算机上,然后将它们重新上传到亚马逊,将数据集上传到亚马逊的最佳方法是什么?

我是否要启动 EC2 实例,从实例中将数据集(使用 wget)下载到 S3,然后在运行 EMR 作业时访问 S3?(我之前没有使用过亚马逊的云基础设施,所以不确定我刚才所说的是否有意义。)

4

3 回答 3

4

我推荐以下...

  1. 启动您的 EMR 集群

    elastic-mapreduce --create --alive --other-options-here

  2. 登录到主节点并从那里下载数据

    wget http://blah/data

  3. 复制到 HDFS

    hadoop fs -copyFromLocal data /data

没有真正的理由将原始数据集通过 S3。如果要保留结果,可以在关闭集群之前将它们移动到 S3。

如果数据集由多个文件表示,您可以使用集群在机器上并行下载它。如果是这种情况,请告诉我,我将引导您完成。

于 2011-07-09T02:49:50.930 回答
1

如果您刚刚开始尝试 EMR,我猜您希望在 s3 上使用这些,因此您不必启动交互式 Hadoop 会话(而是通过 AWS 控制台使用 EMR 向导)。

最好的方法是在与 S3 存储桶相同的区域中启动一个微型实例,使用 wget 下载到该机器,然后使用s3cmd之类的东西(您可能需要在实例上安装它)。在 Ubuntu 上:

wget http://example.com/mydataset dataset
sudo apt-get install s3cmd 
s3cmd --configure
s3cmd put dataset s3://mybucket/

您希望实例和 s3 存储桶位于同一区域的原因是为了避免额外的数据传输费用。尽管您需要为 wget 实例的绑定带宽付费,但到 S3 的 xfer 将是免费的。

于 2011-10-04T21:16:03.203 回答
0

我不确定,但对我来说,hadoop 似乎应该能够直接从您的来源下载文件。

只需输入http://blah/data作为您的输入,其余的由 hadoop 完成。它当然可以与 s3 一起使用,为什么它不能与 http 一起使用?

于 2011-09-28T21:44:19.320 回答