2

现在我正在谷歌云存储(GCS)上存储约 300Gb 的图像。我有在谷歌计算引擎 (GCE) 虚拟机 (VM) 上运行的软件,需要读取所有这些图像并按顺序处理它们。这些图像不需要加载到内存中,可以作为程序的输入流式传输。我很难找到一种有效的方法来做到这一点。

我努力了:

1)GCSfuse。使用 GCSfuse,我可以在我的 VM 上安装 gcs-bucket 并直接访问数据。起初这似乎很理想,但 I/O 速度非常慢。

2)GSutil。这允许我使用“gsutil cp gs://my-gcs-bucket/training_data/*.jpg - |”将数据流式传输到我的程序中。这比 GCSfuse 好得多,但仍然很慢。

我想我有两个主要问题。1) 访问存储在 GCS 存储桶中的数据并将其作为输入流式传输到 GCE VM 上的脚本的最快方法是什么?我需要每天这样做一次,但随着时间的推移,需求可能会增加。2)如果没有快速和聪明的方法来做到这一点,我在存储方面有什么选择?我应该使用不同的谷歌云产品吗?我想避免将所有数据直接加载到 VM 上。

谢谢!

4

1 回答 1

1

gsutil应该是从谷歌云存储中获取项目的最快方法。GCS 通常应该为您提供相当高的吞吐量,但第一个字节的延迟很长。

如果您有大量小文件(jpeg 训练数据可能属于该类别),您可能希望将它们 tar/zip 压缩到更大的存档中。

如果这对您不起作用,并且您的所有文件都小于 1MB,您可以使用更昂贵但延迟更低的 Google Cloud Datastore。

于 2016-10-18T18:33:23.703 回答