如何结合使用 S3 和 EBS 在 AWS 上进行经济高效的分析?

How to use S3 and EBS in tandem for cost effective analytics on AWS?

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

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

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

我可以采用什么方法以经济高效的方式快速处理这些数据:

  1. 在S3上存储一个5TB的文件作为对象,每次读取对象,做 处理并将结果保存回 S3
  2. 将 5TB 作为对象存储在 S3 上,读取对象,将其分块为更小的对象,然后将它们作为多个对象保存回 S3,以便将来只处理我感兴趣的块
  3. 从一开始就将所有东西保存在 EBS 上,将其挂载到 EC2 并进行处理

谢谢

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

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

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

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

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