この記事は 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.
大きな違い
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の影響があまり見えなかった