2016-06-22 4 views
0

今はGoogleのクラウドストレージ(GCS)に〜300Gbの画像を保存しています。 Google Compute Engine(GCE)仮想マシン(VM)で動作するソフトウェアがあり、これらの画像をすべて読み込んで順次処理する必要があります。これらの画像は、メモリにロードする必要はなく、プログラムへの入力としてストリーミングすることができます。私はこれを行う効率的な方法を見つけるのに苦労しています。グーグルクラウドストレージからデータにアクセスし、GoogleクラウドVM上で実行するソフトウェアにストリームする最も速い方法はどれですか?

私は試しました:

1)GCSfuse。 GCSfuseを使用すると、VM上にgcsバケットをマウントして、データに直接アクセスできます。これは最初は理想的だったようですが、I/Oは非常に遅いです。

2)GSutil。これにより、 "gsutil cp gs://my-gcs-bucket/training_data/*.jpg - |"を使って私のプログラムにデータを流すことができます。これはGCSfuseよりはるかに優れていますが、まだかなり遅いです。

私は2つの主な質問があると思います。 1)GCSバケットに格納されたデータにアクセスし、GCE VM上のスクリプトへの入力としてストリームする最速の方法は何ですか?私はこれを毎日1回行う必要がありますが、需要は時間とともに増加する可能性があります。 2)これを行うためのすばやく巧妙な方法がない場合は、ストレージのどのような選択肢がありますか?別のGoogleクラウド製品を使用する必要がありますか?私はすべてのデータをVMに直接ロードする必要がないようにしたい。

ありがとうございます!

答えて

0

gsutilは、Googleのクラウドストレージからアイテムを取得する最速の方法です。 GCSは、一般的にかなりのスループットを得るはずですが、最初のバイトまでの待ち時間が長くなります。

小さなファイルが多数ある場合(jpegトレーニングデータはおそらくそのカテゴリに分類されます)、大きなアーカイブにtar/zipしたい場合があります。

これはうまくいかず、すべてのファイルが1MB未満であれば、Google Cloud Datastoreを使用できます。これは高価ですが、待ち時間ははるかに短くなります。

関連する問題