我想使用Amazon EMR处理一些大型数据集(25gb+,可以在互联网上下载)。与其将数据集下载到我自己的计算机上,然后重新上传到Amazon上,那么将数据集上传到Amazon上的最佳方法是什么?
我是否要启动一个EC2实例,将数据集(使用wget)从该实例中下载到S3中,然后在运行EMR作业时访问S3?(我以前没有使用过亚马逊的云基础设施,所以我不确定我刚才说的是否有意义。)
发布于 2011-07-09 10:49:51
我推荐以下几点:
通过elastic-mapreduce --create --alive --other-options-here
将http://blah/data
wget到HDFShadoop fs -copyFromLocal data /data
没有真正的理由将原始数据集放在S3中。如果您想保留结果,可以在关闭集群之前将它们移动到S3中。
如果数据集由多个文件表示,则可以使用集群跨机器并行下载它。如果是这种情况,请让我知道,我将向您介绍它。
垫子
发布于 2011-10-05 05:16:03
如果你刚刚开始并尝试电子病历,我猜你想要这些在s3上,这样你就不需要启动一个交互式的Hadoop会话(而是通过亚马逊网络服务控制台使用电子病历向导)。
最好的方法是在与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-09-29 05:44:19
我不确定,但在我看来,hadoop应该能够直接从您的源文件下载文件。
只需输入http://blah/data作为输入,剩下的工作就应该由hadoop完成了。它当然可以和s3一起工作,为什么不能和http一起工作呢?
https://stackoverflow.com/questions/5800061
复制相似问题