Amazon Elastic MapReduceを使う(その1)

2014/6/7 : 記事を更新しました。

  1. Hadoop、おしさしぶり(It's long time to see, Hadoop.)
  2. Amazon Elastic MapReduceを使う:マネージメント・コンソールからのクラスタの起動
  3. Amazon Elastic MapReduceを使う:マネージメント・コンソールからサンプルを動かす。
                                                                          • -

前回までの記事では、Amazon Elastic Compute Cloud(EC2)にHadoopの実行環境を構築したが、現在、Amazon Web Services(AWS)では、Amazon Elastic MapReduce(EMR)というHadoopの実行環境が提供されている。
EC2で構築・実行する際の煩わしさがなく、とても使い勝手のよいものと感じた。

今回は、このEMRの環境設定について取り上げる。
使い方の詳細は「Hadoopファーストガイド(CookPadの方が書かれた本)」に記載されている。今回の記事はこちらを参考にさせてもらった。

Hadoopファーストガイド

Hadoopファーストガイド

サインアップ

AWSの他のサービス同様、EMRの場合も初回にサインアップを行わなければならない。
(例えば)マネージメントコンソールのサービス一覧からEMRを選択すると、以下の画面が出て、Sign upを要求される。

Sign up Elastic MapReduceをクリックすると、以下の画面に遷移する。
これでSignUpは終了で、Management ConsoleからEMRを利用できるようになる。

Management Consoleからサンプルアプリを実行する。

上の画面で「AWS Management Consoleの起動」をクリックすると、以下の画面に遷移する。

ここで「Sign in to the AWS Console」を選択して、Management Consoleを開く。

EMRでは、MapReduceの1連の処理をJobFlowという単位で管理している。
JobFlowの中には、複数のステップを持つことができ、この「ステップ」が1プログラム(処理)と考えると分かりやすい。
実行や管理は、JobFlow単位で行われる。

pythonで組まれたワードカウントのサンプルが用意されているので、それを実行してみる。
以下はEMRの初期画面で、ここからCreate NewJob Flowを起動して、画面の指示に従ってパラメータを登録していく。

Job Flow Nameは、コンソール上に表記されるJobFlowの名前、Hadoopバージョンは、(現時点で)Amazon Distribution の他にMapRのM3とM5が利用できる。Amazon Distributionを選択する。「Run a sample application」をチェックして、Word Countを選ぶ。

EMRでは、外部ファイルの保存先としてS3を使う(ようだ)。サンプルの実行にあたっては、自分の持っているバケットに適当なフォルダーを作成し、そこに結果をOutputさせる。

EMRでは、Master Instance Groupが「ジョブトラッカー」と「ネームノード」、Core Instance Groupが「タスクトラッカー」と「データノード」、Task Instance Groupが「タスクトラッカー」の役割を担う。以下の画面では、それの数とタイプを選択する。(タイプはsmall以上になっている)

Key Pairの設定を聞かれるので、手持ちのEC2のキーペアーを指定する。EMRでは、裏で上での指定に対応したEC2インスタンスが起動する。(EC2のManagement Consoleから見る事ができる)。
ここで、Keep AliveをNoにしておかないと、処理が終わっても、インスタンスが残ってしまう。NOにするとインスタンスはTerminateされる(Management Console上からも消えてしまう)。

次にBootStrap Actionを聞かれる。
BootStrap Actionは、言葉の通り、BootStrapとして実行する処理の意味。EMRではJob Flow をCreateする度に新しいEC2インスタンスが起動されるが、この際、時刻調整やアプリケーションのインストールや実行環境の設定などを行うプログラム(shellなど)をBootStrapアクションとして指定できる。
BootStrapアクションとして実行するプログラムは、S3に保管しておく。
今回の場合は、「Proceed with no bootstrap action」を選択して、continueを押す。

以下の画面がでたら、Job Flowの作成完了。

Closeをして、Management ConsoleをRefreshすると以下のようにJob Flowが現れる。

Statusは、Starting , Running と推移し、処理が終了すると、Shutting Down, Completedとなる。

Outputフォルダーに指定したS3バケットを参照すると、結果が格納されているはずである。