Amazon Elastic MapReduceを使う(その3:コマンドラインツールでBootStrapActionを動かす)

先のログで紹介したEMR用のコマンドラインツール;Elastic MapReduce Rubyはとても使い勝手がよい。

EMRの初回のログで、Managemant ConsoleからJobFlowを定義した際に、BootStrapActionを定義する箇所があった。
BootstrapActionはジョブフロー起動時(EC2インスタンス起動時)に自動的に実行されるアクションなので、ここに定義することで、EMRの初期設定が可能になる。

たとえば、ECではタイムゾーンUTCで起動してくるが、これは以下のように変更する必要がある。

hadoop@ip-10-122-126-242:~$ date
Fri Jun 14 06:19:47 UTC 2013
hadoop@ip-10-122-126-242:~$ sudo rm /etc/localtime 
hadoop@ip-10-122-126-242:~$ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hadoop@ip-10-122-126-242:~$ date
Fri Jun 14 15:21:07 JST 2013
hadoop@ip-10-122-126-242:~$

BootStrapAction用のShell Scriptの作成と保存

これをshellスクリプトにして、s3に保管しておき、それをBootstrapオプションで実行する。
以下を、initial.shとして、S3の[your bucket]/[your folder]/に格納する。

#!/bin/bash

#s3コマンド用
access_key = [your access key]
secret_key = [your secret key] ~/.s3cfg

#時刻設定
sudo rm /etc/localtime 
sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

BootStrapAction用を指定したJobFlowの起動。

このBootStrapActionを指定して、EMRを起動する。

elastic-mapreduce --create --alive --name Spot-Cluster --instance-group master --instance-type m1.small --instance-count 1 --instance-group core --instance-type m1.small --instance-count 1 --instance-group task --instance-type m1.small --instance-count 1 --bootstrap-action s3n://[your bucket]/[your folder]/initial.sh

ログインして確認すると、以下のように日付が正しく表示される。

MacBook-Pro:~ tetsuya$ ssh -i ~/.ssh/[your key pairs]pem hadoop@[your uri of master]
Linux (none) 3.2.30-49.59.amzn1.i686 #1 SMP Wed Oct 3 19:55:00 UTC 2012 i686
--------------------------------------------------------------------------------

Welcome to Amazon Elastic MapReduce running Hadoop and Debian/Squeeze.
 
Hadoop is installed in /home/hadoop. Log files are in /mnt/var/log/hadoop. Check
/mnt/var/log/hadoop/steps for diagnosing step failures.

The Hadoop UI can be accessed via the following commands: 

  JobTracker    lynx http://localhost:9100/
  NameNode      lynx http://localhost:9101/
 
--------------------------------------------------------------------------------
hadoop@ip-10-140-73-83:~$ date
Fri Jun 28 18:50:45 JST 2013