ビッグデータ セットを転送するための戦略

2017 年 10 月 11 日更新

この記事では、データを Cloud Storage に転送するさまざまな方法の概要を説明し、ニーズに応じて最適な方法を選択できるよう支援します。また、gsutil ツールを使用したデジタル ネットワーク転送のベスト プラクティスを紹介します。

既存のビジネス オペレーションを Google Cloud Platform(GCP)に移行する際は、通常、大量のデータを Cloud Storage に転送する必要があります。Cloud Storage は、高可用性と耐久性を備えたオブジェクト ストアサービスで、バケットに保存できるファイル数に制限はありませんが、各ファイルの最大サイズは 5 TB に制限されます。Cloud Storage は BigQueryCloud Dataflow などの他の GCP サービスと連動するように改善されているため、より幅広い GCP アーキテクチャで簡単にクラウドベースのデータ エンジニアリングと分析を行うことができます。

この記事を最大限に活用するには、次の質問に対して大まかな答えを用意しておく必要があります。

  • 転送が必要なデータ量。
  • データのロケーション。たとえば、データセンター内にあるのか、それとも別のクラウド プロバイダに存在するのか。
  • データのロケーションから利用可能なネットワーク帯域幅。
  • データの転送頻度。例: 1 回だけ、定期的。

費用の見積もり

現在、データを Cloud Storage に移行する際に、上りトラフィックに対する料金は発生しません。また、gsutil ツールと Storage Transfer Service はどちらも無料でご利用いただけます。最新の料金設定について詳しくは、GCP ネットワークの料金ページをご覧ください。

データを転送した後は、ストレージネットワークオペレーションの使用状況に応じて Cloud Storage に対する料金が発生します。また、各ストレージ クラスで予想される費用を検討し、ユースケースに応じて適切なストレージ クラスを選択する必要があります。Cloud Storage API インターフェースはクラスに依存しないため、同一の API がすべてのストレージ クラスにアクセスできます。詳細については、Google Cloud Storage の料金体系をご覧ください。

Transfer Appliance の料金には、使用料、送料、延滞料が含まれます。アプライアンスから Cloud Storage へのデータ取り込みは無料です。Transfer Appliance を使用してデータを転送した後は、通常の Cloud Storage 使用料金をお支払いいただくことになります。詳細については、Transfer Appliance の料金ポリシーをご覧ください。

データ転送ソリューションによっては、Google 外の費用も発生する場合があります。そのような費用には、以下のものが含まれます(これらに限定されるものではありません)。

  • ソース プロバイダによる下りおよびオペレーション料金。
  • オンライン転送またはオフライン転送に対するサードパーティのサービス料金。
  • サードパーティのネットワーク料金。

適切なデータ転送方法の選択

次の図に、Cloud Storage への各種データ転送方法を示します。

Cloud Storage へのデータ取り込み

  • X 軸は、データソースへのアクセスのしやすさ、つまり GCP との「近さ」を表します。このコンテキストでは、優れたインターネット接続を使用できるソースは距離が近く、インターネット接続がないソースは遠くにあります。
  • Y 軸は、転送されるデータの量を表します。

この記事の残りの内容は、次の図を参考に読み進めてください。この図は、ツールの選択プロセスを表しています。

ツールの選択

「近さ」の定義

データと GCP との「近さ」に対する具体的な定義はありません。これは最終的には、データサイズ、ネットワーク帯域幅、そしてユースケースの性質によって決まります。

データのサイズとネットワーク帯域幅に基づいてデータ転送時間を見積もるには、次の図が参考になります。転送時間は常に特定のユースケースのコンテキスト内で分析します。たとえば、あるワークフローで 1 TB のデータを 3 時間にわたって転送するのは無理であっても、別のワークフローでは同じ量のデータを 30 時間にわたって転送できる場合もあります。

転送時間の見積もり

データを GCP に近付ける

このセクションでは、データサイズとネットワーク帯域幅という 2 つの主要な方策によって「近さ」を改善する方法について説明します。

データサイズを縮小する

データのサイズは、ソースでデータの重複を排除して圧縮することによって縮小できます。データの圧縮および重複排除により、ネットワーク経由で転送する必要があるデータの量を最小限にすると、転送時間が短縮されるとともに、ストレージの費用も抑えられます。データに多数の小さなファイルが含まれている場合、tar -cvzf などのツールを使用してこのようなファイルを圧縮してグループ化すると、gsutil または Storage Transfer Service を使用するときに転送が大幅に高速化します。

データの圧縮にはトレードオフが伴います。それは、圧縮では CPU の負荷が高まり、長時間かかる場合があるためです。アーカイブ目的でファイルを保存する場合には、それらのファイルを圧縮してから Cloud Storage に転送することを検討してください。転送したファイルをアプリ内で使用することを予定している場合は、おそらく Cloud Storage 内でデータの重複排除を行うことになるでしょう。その場合には、ファイルを圧縮されていない状態で転送する必要があります。

一般に、テキストデータを圧縮した場合、圧縮比率は 4:1 になります。JPEG や MP3 などのバイナリデータやマルチメディア データのサイズを縮小するには、多くの場合、非可逆圧縮アルゴリズムの使用が最善のオプションとなります。

可能であれば、コンパクトなファイル形式を使用するようにしてください。たとえば、Avro ファイルは本質的にコンパクトです。

ネットワーク帯域幅を増やす

ネットワーク帯域幅を増やす方法は、GCP との接続方法によって決まります。GCP に接続するには、主に 3 つの方法があります。

  • 公共のインターネット接続
  • ダイレクト ピアリング
  • Cloud Interconnect

公共のインターネット接続を利用する場合

公共のインターネット接続を使用する場合、インターネット サービス プロバイダ(ISP)の容量とルーティングの制約を受けるため、ネットワークのスループットは予測できません。ISP が制限付きのサービスレベル契約(SLA)を提供している場合もありますが、そうではない場合もあります。ただし、公共のインターネット接続は比較的低価格で利用できます。

ダイレクト ピアリングで接続する場合

ダイレクト ピアリングで Google ネットワークにアクセスすると、ネットワーク ホップ数を最小限にできます。このオプションを使用する場合、ネットワークと Google のエッジ拠点(PoP)間でインターネット トラフィックを交換できます。そのため、ネットワークと Google のネットワーク間のホップ数が少なくなります。

Cloud Interconnect 接続

Cloud Interconnect では、Cloud Interconnect サービス プロバイダのうちの 1 つを通して直接 GCP に接続できます。このサービスでは、大規模なデータ転送でも安定したスループットを確保できます。また、通常はネットワークの可用性とパフォーマンスに対する SLA も含まれています。 詳細については、直接サービス プロバイダにお問い合わせください

GCP へのデータ転送

データは別のクラウド サービスから転送することも、オンプレミスのデータセンターから転送することもできます。どの転送方法を使用するかは、データが GCP にどの程度「近い」かによって決まります。このセクションでは、次のオプションについて説明します。

  • クラウドから転送(非常に近い場合)
  • コロケーションまたはオンプレミスのストレージから転送(近い場合)
  • 遠くからの転送

クラウドから転送

データソースが Amazon S3 バケット、HTTP / HTTPS の場所、または Cloud Storage バケットである場合、Storage Transfer Service を使用してデータを転送できます。

コロケーションまたはオンプレミスのストレージから転送

GCP に比較的「近い」コロケーション施設またはオンプレミスのデータセンターでデータを運用している場合は、gsutil またはサードパーティ ツールを使用してデータを転送します。

gsutil

gsutil ツールは、Windows、Linux、Mac で利用可能なオープンソースのコマンドライン ユーティリティです。

  • マルチスレッド / 処理機能: 多数のファイルを転送する場合に役立ちます。
  • 並列複合アップロード: 大きなファイルを分割し、それらのチャンクを並行して転送し、宛先で結合します。
  • 再試行: 一時的なネットワーク障害と HTTP/429 および 5xx エラーコードに適用されます。
  • 再開可能: エラー発生後に転送を再開します。
制限事項

gsutil ツールには、ネットワーク スロットルのサポートが組み込まれていません。したがって、ネットワーク層でトラフィックを制御するためには Trickle などのツールと組み合わせて使用する必要があります。オペレーティング システムレベルの特権があり、詳細レベルの微調整に習熟している場合は、TCP パラメータの調整や、転送スループット率の増加によって転送時間を短縮することもできます。

gsutil ツールは、1 回限りの転送や手動で開始する転送には最適です。継続的なデータ転送パイプラインを確立する必要がある場合は、gsutilcron ジョブとして実行するか、Airflow などの別のワークフロー管理ツールを使用して処理をオーケストレートする必要があります。

データの暗号化

gsutil ツールは、トランスポート層の暗号化(HTTPS)を使用して転送中のトラフィックを暗号化します。Cloud Storage では暗号化された形のままデータを保管するため、ユーザーが独自の暗号鍵を使用できるようになっています。セキュリティに関する推奨事項の詳細については、セキュリティとプライバシーの留意事項をご覧ください。

転送のマルチスレッド化

シングル スレッドの gsutil プロセスを使用して複数のファイルをネットワーク上で転送すると、利用可能な帯域幅を十分に活用できない場合があります。次の図は、4 つのファイルのシングル スレッド転送を示しています。各ファイルは、前のファイルの転送が完了するまで待ち状態になるため、使用されていない帯域幅が無駄になります。

シングル スレッド転送

ファイルを並列でコピーすると、より多くの帯域幅を使用し、データの転送速度を上げることが可能です。次の図は、4 つのファイルのマルチスレッド転送を示しています。

マルチスレッド転送

デフォルトでは、gsutil ツールはシングル スレッドで複数のファイルを転送します。マルチスレッドによるコピーを有効にするには、-m フラグを指定して cp コマンドを実行します。

次のコマンドは、送信元のディレクトリにあるすべてのファイルを Cloud Storage バケットにコピーします。[SOURCE_DIRECTORY] はディレクトリ、[BUCKET_NAME] は Cloud Storage バケット名で置き換えてください。

gsutil -m cp -r [SOURCE_DIRECTORY] gs://[BUCKET_NAME]
並列アップロードの結合

大きなファイルをアップロードする場合は、gsutil の並列複合アップロード機能を使用できます。この機能は、各ファイルをより小さいコンポーネントに分割し、これらのコンポーネントを並列してアップロードします。次の図は、1 つの大きなファイルをアップロードする場合と、並列複合方法を使用して同じファイルをアップロードする場合の違いを示しています。

サイズの大きいファイルのアップロード

並列複合アップロード

並列複合アップロードを使用する場合のメリットとトレードオフの詳細については、cp コマンドのドキュメントをご覧ください。

TCP パラメータの調整

TCP 転送のパフォーマンスを改善するには、以下の TCP パラメータを使用します。これらの設定を変更する前に、オペレーティング システムのドキュメントを読んで、専門家に相談してください。

  • TCP ウィンドウ スケーリング(RFC 1323)

    この設定では、スケーリング係数を使用して 16 ビットを超える TCP ウィンドウ サイズを設定できます。この設定によって、データ転送で使用できる帯域幅が増える可能性があります。この機能を使用するには、送信側と受信側の両方が TCP ウィンドウ スケーリングに対応している必要があります。

  • TCP タイムスタンプ(RFC 1323)

    この設定を使用すると、ラウンド トリップ時間を正確に測定して、TCP のパフォーマンス改善に役立てることができます。

  • TCP 選択的確認応答(RFC 2018)

    この設定は、送信側が受信側で受信されていないデータのみを再送できることを意味します。

  • 送信と受信のバッファサイズ

    これらの設定により、相手側が確認応答を送信する前に送信または受信できるデータ量が決まります。使用可能な帯域幅が制限されている場合には、この値を増やしてみてください。

転送スループット率の向上

ネットワーク帯域幅を効果的に増やすと、データ転送のスループット率が向上する場合があります。ネットワークのレイテンシをテストするには、次の gsutil パフォーマンス診断ツールコマンドを実行します。[BUCKET_NAME] は Cloud Storage バケットの名前で置き換えてください。

gsutil perfdiag gs://[BUCKET_NAME]

gsutil を使用して、オペレーティング システムのプロセス、スレッドなどの組み合わせをさまざまに変えて試すことができます。gsutil ツールを使用してネットワークに最適な構成オプションを探ることで、たとえばファイルを小さく分割して送信したほうがよいのか、サイズが大きいまま送信したほうがよいのかを判断できます。

ネットワーク スループットを定義するには、次のオプションを利用できます。

  • -c オプションを使用して、プロセスの数を設定する。
  • -k オプションを使用して、プロセスごとのスレッド数を設定する。
  • -n オプションを使用して、オブジェクトの数を設定する。
  • -s オプションを使用して、各オブジェクトのサイズを設定する。
  • -t wthru_file オプションを使用して、ローカル ディスクからファイルを読み取って、その読み取りパフォーマンスを測定する。

次のコマンドは、2 個のプロセスと 10 個のスレッドを使用して、10 MB のファイルを 100 個アップロードします。このコマンドでは、マルチスレッドの -m オプションと並列複合アップロードの -p オプションを使用しています。[BUCKET_NAME] は Cloud Storage バケットの名前で置き換えてください。

gsutil perfdiag -c 2 -p both -t wthru_file -s 10M -n 100 -k 10 gs://[BUCKET_NAME]

診断の出力例は次のとおりです。書き込みのスループットが 1 秒あたりの Mbit で表示されています。

------------------------------------------------------------------------------
                        Write Throughput With File I/O
------------------------------------------------------------------------------
Copied 100 10 MiB file(s) for a total transfer size of 1000 MiB.
Write throughput: 135.15 Mbit/s.
Parallelism strategy: both

ネットワークと Google のネットワークの間にあるホップ数を確認するには、自律システム(AS)番号フラグを設定した traceroute コマンドライン ツールを使用します。次のコマンドは、Linux 環境で機能します。

traceroute -a test.storage-upload.googleapis.com

GCP を含む大半の Google サービスの AS 番号は AS15169 です。次のサンプル出力を見ると、Google のネットワークに到達する前に 6 回のホップが発生していることがわかります。

traceroute to storage.l.googleusercontent.com (74.125.68.128), 64 hops max, 52 byte packets
     1  [AS0] XXXX.XXXXX.XXX (192.168.2.1)  1.374 ms  1.094 ms  0.982 ms
     2  [AS0] XXXX.XXXXX.XXX (192.168.1.1)  1.582 ms  1.932 ms  1.858 ms
       ...
     6  [AS15169] 108.XXX.XXX.XXX (108.XXX.XXX.XXX)  17.281 ms
       ...

パフォーマンス診断ツールのオプションの詳細については、gsutil ツールのドキュメントをご覧ください

サードパーティ製ツール

gsutil ツールは多くのワークフローに適しています。ただし、高度なネットワーク レベルの改善や継続的なデータ転送ワークフローには、さらに高度なツールを使用することをおすすめします。より高度なツールについては、Google パートナーにお問い合わせください。

次に、さまざまなオプションの一部へのリンクをアルファベット順で示します。

  • Aspera On Demand for Google は、特許取得済みの Aspera のプロトコルに基づく、大規模なワークフローに適したツールです。サブスクリプション ライセンス モデルとして、オンデマンドで利用できます。

  • Bitspeed では、大きなサイズのファイルや多数のファイルの転送用に改善されたファイル転送プロトコルを利用できます。これらのソリューションは、既存のネットワークおよびファイル システムに接続できる、物理アプライアンスおよび仮想アプライアンスとして用意されています。

  • TervelaCloud FastPath を使用すると、GCP との間にマネージド データ ストリームを作成できます。詳細については、Cloud FastPath を使用してデータ ストリームを作成をご覧ください。

  • Komprise を使用すると、オンプレミスのストレージ全体でデータを分析して、コールドデータを識別し、それらのデータを Cloud Storage に移動できます。詳細については、Komprise を使用してコールドデータを Cloud Storage にアーカイブするをご覧ください。

  • Signiant は、あらゆるファイルをどこからでも、どこにでも転送するための SaaS ソリューションとして Media Shuttle を提供しています。Signiant ではまた、高度に改善されたプロトコルに基づく自動スケーリング ユーティリティである Flight や、地理的に分散した場所全体を対象とする大規模な転送を自動化するツールである Manager+Agents も提供しています。

遠くからのデータの転送

データが GCP に「近い」とみなされない場合、オフラインでのデータ転送が必要になります。オフライン転送では、データを読み込んだ物理ストレージ メディアを、GCP とのネットワーク接続に優れたデータ取り込みポイントに発送し、そこからデータを GCP にアップロードします。

Transfer Appliance は、多数のサードパーティのサービス プロバイダと同様に、さまざまな転送オプションが用意されているため、お客様の要件と入念に比較検討して選択できます。主要な選択基準には、次の 2 つがあります。

  • 転送のサイズ。
  • データの動的性質。

Transfer Appliance は大規模なデータ転送に適していますが、大量の動的データがある場合は、Zadara Storage のほうが適切な場合もあります。

Google 担当者にお問い合わせください。最適なオプションを選ぶお手伝いをいたします。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...