Amazon Elastic MapReduceを使う:マネージメント・コンソールからのクラスタの起動

Amazon Web ServicesのEMR(Amazon Elastic MapReduce)を、マネージメント・コンソールから一通り動かしてみる。
最初の画面(下)で「Create Cluster(青いボタン)」をクリックする。

すると、クラスタをコンンフィギュレーションする画面に切り替わるので、ここで定義していく。以前は、ステップ・バイ・ステップで定義していく形式だったが、1つの画面にまとめられたようだ。

Cluster Nameを適当に入れ、LoggingをS3上にする(「Yes」の場合、「log folder s3 location」にlogを保管したいS3バケットとフォルダーを指定する。入力フィールド右のフォルダー・アイコンをクリックすると自分の持っているバケットの一覧が表示されて、フォルダーまで選択できるようになっている)。
Termination Protectionは、終了時の保護機能のようで、これをYesにしておくと、クラスタを終了するときに、Protectionを外さなくてはならなくなる(後述)。
また、クラスタを識別するためのタグ(任意)を入力できる。何かと思って説明をよむと、たんなる識別子のようだ。
AMI(Amazon Machine Image)の選択をみると、EMRでデフォルトで提供されているMachine ImageのHadoopのバージョンは1.0.3となっている。(選択肢としては、0.20から2.4.0まで選択可能)

下にスクロールすると、

pigとhiveを配備するかどうか、他のアプリを配備するか指定できる。デフォルトでpigのバージョン0.11、hiveの0.11が配備される。(これらは、クラスタ起動時にステップとして配備される)
Hardware Configurationでは、VPC(Virtual Private Cloud)を使うかどうかを設定する。自分の場合、VPCを使う理由はないので、デフォルトのままにしておく。Zoneもここで選択可能。自分の場合は、us-standard(N.Virginia)でテストする。
その下がクラスタ構成となっていて、デフォルトではmasterとしてm1.smallが1インスタンス、coreが2インスタンス、taskが0インスタンス。coreはName NodeとJob Tracker、taskではJob Trackerのみが動く。Spot Requestをする場合には、右にチェックをいれる。
Secutity And Accessでは、SSHで使うアクセスキーを指定する。昨年試用していたキーを指定した。
IAMとは、Amazon Identify And Access Managementの略。

さらに下にスクロールすると、

Bootstrap Action(EMRインスタンスの初期設定)とStepの定義ができる。
ステップは後で追加するのでこのままにしておく。
Auto Terminateは、デフォルトのままNoにしておく。この状態だと、Stepの起動・終了と、クラスタの起動・終了が切り離されるので、クラスタを明示的にTerminateしなくてはならない(ずっと、課金されてしまう)

ここまで入力したら、Create Clusterボタンを押して、クラスタを起動する。クラスタの管理画面に遷移する。

上は、先に定義した内容でクラスタが起動中の状態。Cluster(クラスター名:My Cluster)のステータスはStarting、インスタンスのステータスはprovisioningと。まだ、masterノードが起動していないので、master public DNSのところには何も記載されていない。(Job IDは取得されて、Summaryのところ表示される)。

Monitorを展開すると、Cluster、MapReduce他のステータスがグラフで見られるようになっている。(詳細な内容はここでは確認できないが、Slot数などは見られる)

Stepsを展開すると、初期化ステップとして、Hadoop環境のセットアップ、(先にデフォルトで指定されていた)pigとhiveのセットアップがStepとして動いていることが確認できる。Stepのログもこの画面から確認できるようになっている。

しばらく待つと、セットアップが完了し、以下のような画面となる。Cluster、HardwareのステータスがRunningとなり、クラスタの構成は完了。masterのpublic DNSが画面に表示されるようになったのは、あとあと便利。以前は、EC2の画面から調べていて、ノード数が増えてくると面倒だった。

ここまでくると、とりあえずは、ステップを追加してジョブを流すことができる。

次回の記事: Amazon Elastic MapReduceを使う:マネージメント・コンソールからのサンプルを動かす。