1

我有大量数据以对象的形式存储在亚马逊 S3 上。

就像我有用户在亚马逊 S3 上存储了 200+ GB 的照片(大约 100000+ 个对象)。每个对象是一张照片,每个对象大小平均为 5MB。

现在我想给用户一个下载数据的链接。

目前我在做什么。

  1. 使用S3cmd我将所有对象从S3复制到EC2
  2. 然后使用ZIP 命令TAR 命令创建一个 ZIp。
  3. Zip 过程完成后,我将 zip 文件移回 S3。
  4. 然后创建一个单独的链接,我将其作为电子邮件发送给用户。

但是这个过程需要很长很长的时间,大部分时间它给出了内存问题,存储问题并且这个过程非常缓慢。

我需要知道

  1. 有什么办法可以增加这个处理时间。
  2. 是否有任何第三方服务/工具,我可以创建我的文件的快速 zip 并发送给用户。
  3. 或任何其他第 3 方解决方案,我已准备好为此付费。
4

3 回答 3

1

你在高层次上遵循​​的方向是正确的。但是,没有任何直接的答案可以一次性解决您的问题。

这些是你可以尝试做的事情

  1. 要求您的用户创建一个 AWS 账户(或创建一个 IAM 用户)并提供对该用户/账户的只读访问权限
  2. 在上传到 S3 的过程中,您可以将几个 50 或 100 的包中的照片分组压缩,然后放入 S3(来自 EC2,即在创建媒体本身期间)
  3. 使用 - Amazon Import / Export从 S3 导出到外部媒体
于 2014-06-13T15:45:29.863 回答
1

尝试使用 EMR(Elastic Map Reducer 和 S3distCp),这可能对您所需的情况有所帮助,对于 EMR,您必须创建一个集群。和运行你的工作。

于 2014-06-16T13:24:05.313 回答
1

S3DistCP 是在这种情况下可以提供很大帮助的工具。 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html

S3DistCP 可以使用 EMR 集群而不是单个实例从 S3 复制到 S3,并动态压缩对象。

但是,在“大数据”处理中,如果您提前主动创建捆绑包或按需异步启动流程并在完成时通过下载链接通知用户,用户可能会获得更好的体验。

于 2014-06-14T00:28:17.120 回答