Amazon Web Services ブログ
AWS Snowball Edge を使用して HDFS ファイルを Amazon S3 データレイクに移行する
データのソースが増えると、新しく接続されたデータを保存する必要性が高まります。企業のお客様は、オンプレミス Hadoop アプリケーションのデータレイクストレージリポジトリとして Hadoop 分散ファイルシステム (HDFS) を使用しています。お客様は、より安全で、スケーラブルで、アジャイルで、費用対効果の高いソリューションを求めて、データレイクを AWS に移行しています。
AWS への高速転送速度が妥当ではない HDFS 移行には、AWS は AWS Snowball Edge サービスを提供しています。AWS Snowball Edge を使用した HDFS 移行のベストプラクティスは、ファイル転送に中間ステージングマシンを使用することです。このブログ記事では、移行中に中間ステージングマシンを使用する方法を詳しく説明します。
AWS Snowball Edge がお客様に出荷するのは、物理的なデータ移行およびエッジコンピューティングデバイスです (図 1)。デバイスは大量のデータを Amazon Simple Storage Service (Amazon S3) に転送するために使用します。
Amazon S3 は、業界をリードするスケーラビリティ、データの可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。バルク取り込みの場合、データレイクのエントリポイントが Amazon S3 です。99.999999999% (9 が 11 個) の耐久性を持つオブジェクトストアである Amazon S3 は、10,000 データレイク以上をホストします。
AWS のデータレイクストレージの基盤として、Amazon S3 は、コンピューティングとデータ処理から節約したストレージを切り離すことを可能にします。Amazon EMR は、Hadoop や Spark などのビッグデータフレームワークを実行するための管理プラットフォームです。HDFS に加えて、Amazon EMR クラスターには、EMR File System (EMRFS) と呼ばれる独自の HDFS 実装があります。EMRFS は、Amazon S3 の読み取りと書き込みに使用します。ネイティブな AWS のサービスに加えて、Amazon Partner Network (APN) 内の Data Analytics Partners は、処理、スケジューリング、セキュリティ、分析のための統合ツールと標準化されたフレームワークを提供します。
このブログ記事では、AWS Snowball Edge を使用してオンプレミスの HDFS ファイルから Amazon S3 にデータを最適に転送する手順を確認します。手順は、最初に Snowball Edge を使用したデータ移行のベストプラクティスで説明されている「POC、ツール、および最適化」フェーズで実行する必要があります。これは 1 つの Snowball Edge に対して実行してから、複数の Snowball Edge の実行フェーズで適用する必要があります。
AWS Snowball Edge をいつ使用するかを決定する方法についての基準を提示します。
前提条件
ブログ記事のすべてのコンポーネントに従って作業する前に、以下が必要です。
- AWS アカウント
- IAM ユーザー
- オンサイトでローカルネットワークに接続されている AWS Snowball Edge デバイス
- 10G ビットのネットワークアップリンクを備えたマシン (VM またはベアメタルホスト)
AWS Snowball Edge に関する決定
AWS は、データを取り込み、Amazon S3 に転送するサービスを提供します。利用可能なネットワークを使用して AWS への移行用に設計されたものと、オフライン移行に使用するものがあります。AWS Snowball Edge は通常、オフライン移行に使用します。
オンライン取り込みの他のメカニズムの詳細については、以下の他の AWS のサービスを参照してください。
Amazon S3 へのオンプレミスコピーでネットワークの制限に直面している場合、AWS Snowball Edge はファイルを安全にコピー、バルクトランスポート、エッジコンピューティングを実行する機能を提供します。AWS Snowball Edge を使用した 10 テラバイト (TB) を超えるデータ転送は、他の何よりもコストを最適化できます。下の図 2 は、ネットワーク転送速度の低下に基づいて転送時間を推定しています。 これを Snowball Edge のタイムラインと比較すると、各 Snowball Edge でジョブを注文してから S3 でデータが利用可能になるまでおよそ 15 日間かかります。
レート (Mbps) | 82 TB 転送時間 (日) |
6400 | 1.22 |
3600 | 2.11 |
3200 | 2.37 |
2400 | 3.16 |
2216 | 3.42 |
1600 | 4.75 |
800 | 9.49 |
480 | 15.53 |
240 | 31.06 |
80 | 85.42 |
AWS Snowball Edge を活用することを決定したら、AWS Snowball Edge の開始方法: 最初のジョブドキュメントを使用して、最初のジョブを注文します。このガイドでは、最初のジョブを作成し、Snowball Edge デバイスを配送先住所に配送する手順を説明します。
ローカルネットワークへの接続ドキュメントを使用して、AWS Snowball Edge をローカルネットワークに接続します。Snowball Edge を使用したデータ移行のベストプラクティスの記事は、ネットワーク要件に関するガイダンスを示します。理想的には、このローカルネットワーク接続は 10 Gbps 以上のスループットと低レイテンシーです。デバイスをインターネットに接続する必要はありません。
移行手順
以下の手順では、AWS Snowball Edge でステージングマシンを使用して HDFS ファイルを Amazon S3 に移行する方法を説明します。
- ステージングマシンを準備する
- コピーのパフォーマンスをテストする
- ファイルをデバイスにコピーする
- ファイル転送を検証する
ステップ 1: ステージングマシンを準備する
次のセクションでは、ステージングマシンのセットアップ方法について詳しく説明します。ベストプラクティスとして、AWS Snowball Edge への Hadoop ファイル転送では、ローカルファイルシステムに HDFS がマウントされた中間ステージングマシンを使用します。HDFS をマウントすると、ローカルファイルシステムとして操作できます。ステージングマシンは、HDFS からの高スループットの並列読み取りと AWS Snowball Edge への書き込みに使用します。下の図 3 は、ワークフローを示しています。
- 注意: 複数のステージングマシンを使用する場合、各マシンはローカルファイルシステムとして HDFS をマウントする必要があります。
ステージングマシンに関する現行のガイダンスでは、スループットを最適化するために、少なくとも 4 コア、32 GB のメモリ、および高速ディスクアクセスが必要です。ステージングマシンは、10G ビットネットワークアップリンクを備えた仮想マシン (VM) またはベアメタルホストにすることができます。Snowball Edge にデプロイした AMI であってもよいでしょう。大規模なコピー操作を実行すると、ベアメタルホストのパフォーマンスが向上することが確認されています。
ステージングマシンのセットアップ
- AWS CLI をインストールします。
- Hadoop クラスターのマウント可能な HDFS を設定します。「ユーザー空間のファイルシステム」(FUSE) を HDFS へのインターフェイスとしてインストールおよび設定します。
- FUSE インターフェイスをステージングマシンにマウントし、ローカルファイルシステムとしての HDFS へのアクセスをテストします。マウントされたインターフェイスを使用すると、ローカルファイルシステムとして HDFS とやり取りできます。
ステップ 2: コピーのパフォーマンスをテストする
以下のセクションでは、全体の改善とコピーパフォーマンスのテストについて説明します。スループットの観点から、単一のコピーまたは同期操作では、大きなデータセットを転送するには不十分です。転送速度を上げるには、データの分割と並列コピーのオプションを検討する必要があります。
大規模なデータ転送の場合、データをいくつかの異なる部分に分割することをお勧めします。ファイル転送をセグメント化すると、パーティションを並行して転送することも、一度に 1 つずつ転送することもできます。コピーの失敗が発生した場合、識別したセグメントのトラブルシューティングを行うと、迅速に解決できます。データセット全体を確認するのではなく、失敗したセグメントのみを確認します。並列転送により、AWS Snowball Edge への複数の書き込みが可能になり、パフォーマンスが向上します。
- 注意: お客様は、並列転送に複数のワーカーで GNU 並列を使用します。並列操作の数は、ネットワーク帯域幅、データソースのパフォーマンス、およびレイテンシーによって異なります。
ステージングマシンをセットアップし、セグメントを計画したら、コピー操作のスループットをテストします。Snowball Edge への HDFS 転送が成功すると、1.6~2.4 Gbps のスループットを達成できます。パフォーマンスは、ハードウェア、ネットワーク、およびファイルサイズによって異なります。
単純なコピーコマンドを以下に示します。
aws s3 cp /path/to/<file> s3://bucket/prefix/<file> --endpoint http://<SNOWBALL_EDGE IP>:8080 -–profile <profile-name>
- 単一のターミナルを開き、aws s3 cp を実行します
- 転送速度 (たとえば 400 Mbps) を記録します。
- aws s3 cp を使用して端末を追加し続けることにより、コピー機能を並列化します。各テスト後にパフォーマンスを評価します。端末の追加がスループットに悪影響を与える可能性があるパフォーマンスの上限が表示されます。
- 端末のパフォーマンス (端末 1 @ 400 Mbps および端末 2 @ 400 Mbps) を追加します。この例では、800 Mbps で転送しています。パフォーマンスの向上、ターゲットネットワークのレイテンシー、ステージングマシンの機能強化、ファイルサイズの最適化、および HDFS の確保に関する詳細については、FUSE マウントを通じたレートを参照してください。また、データ移行のベストプラクティスも参照してください。
ステップ 3: ファイルをデバイスにコピーする
パフォーマンスのテストと最適化が完了したら、ファイルを Snowball Edge デバイスに並行してコピーするコマンドを準備します。コマンドはステージングマシンで実行する必要があります。たとえば、次のコマンドは、指定されたパス内のすべてのファイルで再帰コピーを実行し、AWS Snowball Edge エンドポイントに書き込みます。
再帰コピーコマンドを以下にリストします。
aws s3 cp /path/to/mounted/hdfs s3://bucket_name --recursive --endpoint http://<SNOWBALL_EDGE IP>:8080 -–profile <profile-name>
転送を並行して実行することに加えて、小さいファイル (5 MB 未満) をまとめてバッチ処理すると、スループットが向上します。デフォルトでは、Snowball Edge は各コピー操作中にすべてのデータを 256 ビット暗号化で暗号化します。暗号化プロセスにはオーバーヘッドがあり、小さなファイルの転送中に遅延が発生する可能性があります。小さなファイルをバッチ処理すると、転送パフォーマンスが向上します。1 つのアーカイブ中で最大 10,000 個の他のファイルと一緒にオブジェクトをバッチ処理することをお勧めします。転送操作中に、Amazon S3 にインポートされたアーカイブの自動抽出を有効にします。
ファイルをバッチ処理してコピーするコマンドを以下にリストします。
tar -zcf - /path/to/batch | aws s3 cp - s3://bucket_name/batch_name.tar.gz --metadata snowball-auto-extract=true --endpoint http://<SNOWBALL_EDGE IP>:8080 -–profile <profile-name>
- 注意: バッチは、サポートされているアーカイブ形式のいずれかである必要があります。バッチ処理に関する追加情報を取得するには、小さなファイルのバッチ処理を参照してください。
ステップ 4: ファイル転送を検証する
AWS Snowball Edge へのファイル転送を完了した後、デバイスを AWS に返送する前に、1 つの重要なステップが残っています。すべてのファイルが Amazon S3 に正常にインポートできることを検証することです。
AWS Snowball Edge デバイス上のすべてのオブジェクトを一覧表示するには、aws s3 ls コマンドを使用します。デバイスにコピーしたオブジェクトのインベントリを取得したら、ソースの場所にあるファイルと簡単に比較できます。このメソッドを使用して、転送されていないファイルを識別します。
検証エラーがある場合、ファイルはデバイスに書き込まれません。一般的な検証エラーの該当箇所を参照してください。
検証後、デバイスを切断し、AWS に返送します。AWS が AWS Snowball Edge を受け取ると、データは Amazon S3 にインポートされます。その場合、AWS マネジメントコンソールでジョブ完了レポートに移動できます。レポートは、ジョブの概要を提示します。
インポートジョブの追加検証が必要な場合は、S3 インベントリを有効にできます。また、S3 バケットとインポートに使用するプレフィックスで Amazon S3 同期を使用することもできます。S3 インベントリは、移行したオンプレミスのソースファイルと比較できる csv ファイルを生成します。aws s3 sync を実行すると、新しいファイルと更新されたファイルがソースディレクトリから宛先に再帰的にコピーされます。このコマンドは、ディレクトリと S3 プレフィックスを同期します。
- 注意: 検証で説明したように sync コマンドを使用するには、クライアントからインターネットに接続できる必要があります。
結論
オンプレミスのデータと Hadoop 環境が成長するにつれて、AWS Snowball Edge を使用して Amazon S3 への移行を加速できます。ネットワーク帯域幅が制限されており、制限を超える Hadoop 移行には、AWS は AWS Snowball Edge サービスを提供しています。Amazon S3 は、既存および増加中のデータに対して、より安全でスケーラブルで費用対効果の高いストレージソリューションを提供します。
1 つの Snowball Edge について Snowball Edge を使ったデータ移行のベストプラクティスで説明したように、HDFS 移行の「POC、ツール、および最適化」フェーズを実行したので、複数の Snowball Edge デバイスを使用して、学習を実行フェーズに適用する準備が整いました。
詳細: