从谷歌云存储访问数据并将其流式传输到在谷歌云虚拟机上运行的软件的最快方法是什么

时间:2016-06-22 21:30:17

标签: streaming cloud storage gcsfuse

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

我试过了:

1)GCSfuse。使用GCSfuse,我可以在我的VM上安装gcs-bucket并直接访问数据。这开始看似理想,但I / O速度过慢。

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

如果这对您不起作用,并且您的所有文件都少于1MB,则可以使用Google Cloud Datastore,这种方式更贵,但延迟时间更短。