使用データは、wikipediaのtraffic を集めたwikistatsデータ。公になっているデータでサイズは150GBです。
(http://aws.amazon.com/datasets/6025882142118545)
第一章: データの準備
参考URL
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-public-data-sets.html
1) Amazon EBS Snapshotのコピー
正直なんのこっちゃって感じでしたが、どうやらデータは、Amazon Elastic Block Store(EBS)でサポートされており、EBCとは仮想の外付けHDDのようなものだと理解しています。そして、Amazonが公開しているフリーのデータの多くは、EBCに格納されているようです。
1. まず初めにAWSのマネジメントコンソールから、EC2のページに行きます。
2. 右にあるツールバーから「Snapshots」を選び、 wikistatsのsnapshots ID (US Snapshot ID (Linux/Unix):snap-f57dec9a) を表示させます。EBSはRegion(Virgnia、N. Carifornia, Oregon, Tokyoなどなど)によって分かれており、wikistatsデータは、Virgniaにありました。なので、表示されなかったら、RegionがVirgniaになっているか確認します。
3. N.Virgniaから自分の最寄りのRegionにコピーします(「Actions」から「Copy」を選択すると、ポップアップでどこにコピーするか聞いてきます)。
4. コピーし終わったら、Create Volumeします。
5. 続いて、EC2のインスタンスを起動します。EBSは”外付けHDD"なので、バーチャルマシンであるEC2インスタンスからアクセスすることになります。EC2を立ち上げるときに、コピーで作ったSnap ShotのIDを入力すると、インスタンスが起動したときに、認識してくれます。
6. EC2が起動したら、Snapshotをマウントします。SSHでEC2のインスタンスにログインして、以下を実行します(ec2-userでログインしているが、rootで作業したいのでsudo suします)
$sudo su
#mkdir /mnt/wikidata
#mount /dev/xvdf1/ /mnt/wikidata
ここまで準備の準備・・・・続いて、マウントしたデータをS3にデータを移します。
2) EC2からS3へデータの転送
1) EC2にSSHログインして、sudo suしたら、便利ツール「s3cmd」をインストールします。そして、s3cmd --configure でセッティング。 Access Key、Secret Keyを聞かれますので、AWSのマネジメントコンソール右上のログイン名をクリックし、Security Credentialから確認できます。
$sudo su
#yum --enablerepo=epel install s3cmd
#s3cmd --configure
3)さて、いよいよデータをEC2からS3に転送します。以下のコマンドでいけるはずです。
#cd /your path to wikistats data/ #s3cmd put --recursive /mnt/wikidata/wikistats/ s3://<your bucket>/wikidata/
これ以外のs3cmdの用法は、こちら(http://s3tools.org/usage)
(おまけ)
転送中にまさか!!・・・途中でエラーが出てファイルの一括アップロードが止まりました。残り961ファイル・・・そこで、残りのファイルのリストを作り、Perlでs3cmd putを呼び出すone linerコードを準備しました。遠い昔にやった、Perl one linerの記憶を便りに検索しまくりました。。。
転送中にまさか!!・・・途中でエラーが出てファイルの一括アップロードが止まりました。残り961ファイル・・・そこで、残りのファイルのリストを作り、Perlでs3cmd putを呼び出すone linerコードを準備しました。遠い昔にやった、Perl one linerの記憶を便りに検索しまくりました。。。
#まず、残ったファイルのリストをテキストファイルで保存
ls /mnt/wikidata/wikistats/ | cat | tail -n 961 > filelist.txt
#そして、Perl one-linerで残ったファイルを転送
perl -nle '$from = "s3cmd put /mnt/wikidata/wikistats/".$_; $to = " s3://<your bucket>/wikidata/wikistats/".$_; $cmd = $from.$to; system($cmd);' filelist.txt
ちょっとつかれたので、続きは次回!