如何在S3上同时使用S3和EBS进行经济高效的分析?

时间:2017-03-29 10:55:04

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-ebs

我在S3存储桶上从客户端收到非常大的(5TB).csv文件。我必须处理这些文件,向它们添加列并将它们存储回来。

我可能需要以与增加未来改进模型的功能数量相同的方式处理文件。

显然因为S3将数据存储为对象,所以每次进行更改时,我都必须读取和写入5TB的数据。

我可以采取哪种最佳方法来经济有效地处理这些数据:

  1. 在S3上存储一个5TB文件作为对象,每次读取对象时都这样做 处理并将结果保存回S3
  2. 将5TB作为对象存储在S3上,读取对象,将其块化为较小的对象并将其作为多个对象保存回S3,以便将来只使用我感兴趣的块
  3. 从开始时保存EBS上的所有内容,将其安装到EC2并进行处理
  4. 谢谢

1 个答案:

答案 0 :(得分:1)

首先,警告 - Amazon S3中对象的最大大小为5TB 。如果您要添加导致更大对象的信息,那么您可能会达到该限制。

处理这一数据量的更智能方法是在并行中进行,最好是在多个较小的文件中,而不是单个5TB文件。

Amazon EMR (实际上,托管Hadoop环境)非常适合在大型数据集中执行分布式操作。它可以并行处理来自多个文件的数据,并可以即时压缩/解压缩数据。学习起来很复杂,但非常有效率和能力。

如果您坚持使用当前处理数据的方法,我建议:

  • 如果您的应用程序可以直接从S3读取,请将其用作源。否则,将文件复制到EBS。
  • 处理数据
  • 将输出本地存储在EBS中,最好是较小的文件(GB而不是TB)
  • 将文件复制到S3(如果符合您的需要,请将其保留在EBS上)