ExpeDat Gateway for Amazon S3を使ったビッグデータのクラウド移行
はじめに
以前、Moving Big Data Into the Cloud with Tsunami UDPという記事の中で、Tsunami UDPをつかって簡単かつ高速にAWSとのデータのやりとりを実現する方法を解説しました。異なるリージョンでのEC2インスタンス間で高速にデータを動かせます。そこからは、AWS CLIをつかったマルチパートアップロードを使って、Amazon S3にデータを動かせます。
Tsunami UDPは無料で、簡単にセットアップできますが、欠点もあります。センシティブなデータを扱うために必要なネイティブの暗号化機能がありません。また、シングルスレッドのアプリケーションであること、2009年以降の更新がないこと、商用サポートもありません。SDKやプラグインもないためTsunami UDPは複雑なルールのもと自動運用させるのは難しく、さらにTsunami UDPはネイティブのS3インテグレーション機能はありません。そのため、まずEC2インスタンスに転送し、そこからAWS CLIなどを使ってS3に送信する必要があります。
Data Expedition IncによるExpeDatは、それらの不足を解決します。オンプレミスや別リージョンのEC2インスタンスからS3への巨大なデータファイルの移動をシームレスに行えます。Tsunami UDPと違うのは、ExpeDatはアクティブにメンテナンスされ、フルサポートの製品であり、AES暗号をサポートし、GUIを含むクロスプラットフォームで動作する高速なアプリケーションです。ExpeDatはオブジェクトハンドラを有しており、外部スクリプトやプログラムと統合して、自動化を簡単に実現できます。より低レベルでの統合が必要であれば、SDKもあります。ExpeDat S3 Gatewayは自動でデータをS3に入れることができます。EBSやEphemeralストレージを使わずに、転送中のデータはExpeDat gatewayが動作しているEC2ホストのメモリだけを使って、選択したS3バケットにデータ転送ができます。
一番簡単にExpeDataを試すには、ExpeDat Gateway for Amazon S3 をAWS Marketplaceから行います。. 1時間あたり300GBの転送を簡単に行うことができ、 monthly subscriptionもあります。EC2でのThe ExpeDat S3 Gatewayのセットアップは数分で行うことができます。
Getting Started
ここでの例として、 以前のblog postでつかったWikipedia Traffic Statistics V2 from AWS Public Data Setsを使うことにします。650MBの圧縮データを東京リージョン(ap-northeast-1)から、バージニアリージョン(us-east-1)で動作しているExpeDat D3 Gatewayのフリートライアル版EC2インスタンスにデータを移動させてみましょう。コピーしたデータ は、ap-northeast-1:s3://accel-file-tx-demo-tokyoにあります。
Launch the ExpeDat S3 Gateway (server)
- AWS MarketplaceのページにあるExpeDat Gateway for Amazon S3 trialへすすみます。
Note: 21日間はソフトウェア費用はかかりませんが、通常のAWS費用はかかります。
- ExpeDat Gateway for Amazon S3のインスタンスをUS East (Virginia) リージョンで起動します。
Note: ここでは、ExpeDatコマンドラインクライアントを使用していますが、MacやWindows用のGUIツールをダウンロードして使うこともできます。
ExpeDat Gateway for Amazon S3インスタンスで"servedat"というサーバアプリケーションを動作させ、S3バケットを設定します。
Set up the ExpeDat Client
- Amazon Linuxインスタンスをap-northeast-1 (Tokyo)で起動します。このテストでは、us-east-1で動作させているインスタンスタイプと同じものを選択します。このためのAWS CloudFormation templateを用意しています。 これは、64ビット版の 2014.03.01 Amazon Linux PV AMIを2つ以上の大きなEphemeralドライブを有効にして起動します。ブートストラップのスクリプトはRAID0を構成し、 /mnt/bigephemeralにマウントします。
- ExpeDatクライアントを、ExpeDat Gateway for Amazon S3インスタンスからダウンロードします。
AWSマーケットプレイスから起動したS3ゲートウェイをつかっていなくても Linux x86-64 ExpeDat clientから入手できます。
- ダウンロードした、ExpeDat client を、CloudFormationで起動したEC2インスタンスにコピーします。SSHでつかうTCP22がオープンしていれば、SCPを使うことができます。
- AWS CloudFormationでつくったインスタンスにSSHでログインします。
- OSのパラメータをUDPバッファを大きくし、スループットが上がるように設定します。
sysctl -w net.core.wmem_max=
4194304
sysctl -w net.core.rmem_max=
4194304
Data Expeditions社のUDP Tuning guidanceも参考になります。
- ExpeDat “movedat” という名前のファイル転送クライアントをインストールします。このために、ExpeDatのアーカイブ・ファイルを展開し、install-movedat.shを走らせます。
- “fallocate”コマンドを使って650GBのテストファイルを作ります。
fallocate -l 650G bigfile.img
movedat bigfile.img [user]@[ExpeDat S3 Gateway IP]:=S3
別の方法として、datasetファイルからtarballを作り、ExpeDatのmovedatにパイプします。
tar -cf - /mnt/bigephemeral | \
movedat [user]@[ExpeDat S3 Gateway IP]:=S3
- ファイル転送が完了すると、S3バケットに現れます。
簡単ですね。フォルダを監視したり、S3へマニュアルでアップロードする必要もありません。ファイルをExpeDat client (movedat)を通じて、ExpeDat Gateway for Amazon S3に送れば、S3バケットへの転送ができます。
AES-128を使うには、movedatコマンドに-Kオプションを使います。これはTsunami UDPには無い機能です。暗号化転送を有効にすると、サーバとクライアントのCPU付加が上昇します。高速なネットワークをつかっていたり、忙しいサーバではパフォーマンス低下にも注意します。
movedat -K * test@[ExpeDat S3 Gateway IP]:=S3
別のExpeDat Gateway for Amazon S3の利用例はS3バケットでのリスト、リネーム、デリート、ダウンロードです。ExpeDatをつかった複雑なS3オブジェクトの扱いは複数のツールを使うことなしに実現できます。
例えば、バケットのリストは
movedat -o [user]@[server]:=S3
サブディレクトリのリストは
movedat -o [user]@[server]:=subdir/S3
リネーム:
movedat -o -m \
[user]@[server]:pagecounts-
2008
-
1001
-
000000
.gz=S3 \
newfile.gz
リネームしたファイルをダウンロードし、ローカルで新しい名前にする
movedat -o [test]@[server:newfile.gz=S3 localfile.gz
Conclusion
ビッグデータの世界は進化しており、バッチプロセスからリアルタイムやニアリアルタイムになってきています。ExpeDat S3 Gatewayのようなツールは、S3との統合を高速かつシームレスに行うことで、巨大なデータをAWSに移動しなければいけないビジネスニーズ実現を簡単にします。とりわけ、オンプレミスや他のリージョンにあるデータをS3に移動し、EMRやRedshiftでの分析には必要になるでしょう。
ExpeDat Gateway for Amazon S3は、Tsunami UDPのようなフリーのツールをしのぐGUIやCUI、あるいは暗号化といった機能が加えられています。また、様々なオプションのあるCLIにより、複雑なファイルのワークフローの自動化を簡単にします。このブログ記事で紹介したようなS3オブジェクトの操作や、オブジェクトハンドラを使ってExpeDat S3 Gatewayにトリガしてり、ExpeDat クライアントSDKをプログラム内で使うこともできます。おそらくもっとも重要なことは、ExpeDatとその周辺ツールが、Data Expeditionによって活発にメンテされ、フルサポートが提供されていることかもしれません。それらは、AWS Marketplaceを通じて簡単にインストールすることがででき、必要なGBコストもとても安いです。 フリートライアルもあるのでお試しください。
疑問や質問は、どうぞコメントの形でお残しください。
Matt Yanchyshyn はAWSのプリンシパルソリューションアーキテクトです。(日本語:荒木靖宏)
コメント