S3からGCSへのコピーについて

  • 2
    いいね
  • 0
    コメント

この記事は Recruit Engineers Advent Calendar 2016 の8日目の記事です。

はじめに

RLSの@byaです。本記事では、S3からGCSへコピーについて書きます

送る方法

GCSへ送り方が2つあるが、以下のような使い方が分かれる

  • When transferring less than 1 TB of data, use gsutil.
  • When transferring more than 10 TB of data, use Storage Transfer Service.
  • For between 1 and 10 TB of data, use either gsutil or Storage Transfer Service.

大きな違い

Screen Shot 2016-12-08 at 19.07.22.png

Cloud Storage Transfer Serviceで転送する

参考ページ

インターフェース

  • Creating and Managing Transfers with the Console
  • Creating a Storage Transfer Service Client
    • Python
    • Java
  • Storage Transfer Service API

実験

データ内容 ファイル数 サイズ コスト時間 インターフェース
圧縮された(*.gz)・ ログデータ 16562 591.31GB 11:48:48 ~ 13:18:40 (90分) Web UI console

課題

上記の実験から早いことが分かるが、APIを時間単位で呼ぶと、API制限にひっかかる

"gsutil cp" コマンドで転送する

gsutil はCLIツールです。ですので、サーバーが必要になります。今回は、「クラウド別による転送・CPUによる転送・Memoryによる転送」で実験してみました。

クラウド別による転送

以下の環境で行いました!

環境 cpu memory os
local (docker) 2 CPU 2 GB Centos 7
GCE 4 vCPUs 16 GB Debian 8
EC2 4 vCPUs 16 GB Centos 6.6
fha (独自サーバー) 4 CPU 8 GB Centos 6.5

実験

データ:圧縮された(*.gz), ログデータ

ファイル数 サイズ オプション local fha EC2 GCE
1 132.1 MiB -m cp -r 1m19.628s 1m2.164s 0m22.274s
48 3.4 GiB -m cp -r 7m0.263s 2m13.449s 1m50.913s
96 6.3 GiB -m cp -r 11m51.083s 4m39.063s 3m4.146s

CPUによる転送

CPUの個数を色々変えて転送してみます。

環境:GCE (memory = 8 gb, zone = asia-northeast1-a)
データ:圧縮された(*.gz), ログデータ

ファイル数 サイズ オプション CPU = 1 CPU = 2 CPU = 4 CPU = 8
1 132.1 MiB -m cp -r 0m19.914s 0m20.266s 0m20.632s 0m21.392s
48 3.4 GiB -m cp -r 2m56.895s 2m14.262s 1m49.925s 2m4.989s
96 6.3 GiB -m cp -r 4m51.639s 4m6.444s 3m0.520s 3m37.409s

Memoryによる転送

CPUの容量を色々変えて転送してみます。

環境:GCE ( cpu = 4 , zone = asia-northeast1-a)
データ:圧縮された(*.gz), ログデータ

ファイル数 サイズ オプション メモリ=4gb メモリ=8gb メモリ=16gb メモリ=26gb
1 132.1 MiB -m cp -r 0m20.650s 0m20.718s 0m21.316s 0m21.220s
48 3.4 GiB -m cp -r 2m2.060s 1m57.305s 1m50.478s 2m6.267s
96 6.3 GiB -m cp -r 3m10.678s 3m19.626s 3m2.745s 3m15.855s

まとめ

  • Storage Transfer Serviceは速度は早いが、API制限がある
  • gsutilは、環境の影響によって速度が異なる。第三の環境で実施すると遅い(fha/local)。AWS or GCP のサーバーなら大丈夫が、GCPがベッター
  • CPU増加で速度改善が見込めるが、おおよそで4CPUあたりが適正値
  • Memoryの影響があまり見えなかった