Amazon Elastic MapReduce : bootstrap-actionのwgetがうまくいかない。
今回は、ちょっとした備忘。
Amazon Elastic MapReduceの環境を初期設定するために、bootstrap actionsというのが定義できる。クラスタ起動時にHadoopが開始される前、各インスタンスに対して実行される。(詳しくはAWS Documentation(英語)を参照)
ここでテンプレートをつかって、Hadoopの設定を変更したり、S3に保存したShellを動かしてクラスタインスタンスにソフトをインストしたりできる。後者は、Custom Bootstrap Actionと呼ばれている。
ここで、initial.shというshellをS3に保存し、以下のことをしようとしたのだが、どうもうまくいかない。
- 日付を日本時間に合わせる。
- S3cmdのコンフィギュレーションファイル(.s3fg)を作成する。
- S3cmdをsourceforgeのCDNからダウンロード&解凍する。
(注)S3syncはgems2.2で、AMI上でnokogiriのインストがうまくいかないので、深入りしなかった。
上の3ステップで、うまく行かないのは最後のところ。以下にinitial.shを示しておく。
注意するのは、exitコードをつけておかないといけない位と思う。
#!/bin/sh set -e #時刻設定 sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime #s3cmd #一度、最新バージョンのs3cmdを導入後、 --configureをして作成して、それを元に作成する(もっと長い)。 echo "[default] access_key = [your access key] secret_key = [your secret key]" > ~/.s3cfg #s3cmd wget -S -T 30 -t 5 http://superb-dca3.dl.sourceforge.net/project/s3tools/s3cmd/1.5.0-beta1/s3cmd-1.5.0-beta1.tar.gz tar zxfv s3cmd-1.5.0-beta1.tar.gz export PATH=$PATH:/home/hadoop/s3cmd-1.5.0-beta1 exit 0
ここでうまくいかないのは、wget。インスタンスをUSにしているので、s3cmdのダウンロード先もUSに変更したのだがうまくいかない(タイムアウトも30sec、5回に設定)。
AWS Documentにもサンプルがあるんだけどなぁ。
ログでもみようかな。