次に、EMRがどのようなアーキテクチャで構成されているのかを説明します。
EMRでは通常、入力データと出力データをS3に保存します。HDFSも利用していますが、これは主にMapperの出力などの中間データの格納先としてのみ利用されます。EMRは次のようなファイルシステムをサポートしています。
HDFSはEC2インスタンスのローカルディスク上に構築され、中間データの格納先として利用されます。データの読み出しや書き込みは基本的にS3に対して行われます。
EMRではジョブフローやステップといった用語が使われます。ジョブフローやステップとはいったい何なのでしょう。言葉が独特なので違和感を覚えるかもしれませんが、EMRでは一連の処理をジョブフロー、その中で実行されるそれぞれの処理をステップと呼びます。
用語 | 説明 | |
---|---|---|
ステップ | ひとつのHadoopジョブ | |
ジョブフロー | 複数のステップを含む一連の処理で、クラスタ毎にひとつ割り当てられる | |
EMRを起動するとまずジョブフローが起動します。ジョブフローはユーザからデータ処理の指示を受け取り、ステップを起動して作業指示を出し、進捗状況をステータスとして報告する役割です。
ジョブフローには複数のステップが登録されます。ひとつのジョブフローの中にステップは256個まで登録可能であり、ジョブフロー内ではステップは定義された順番で実行されます。ステップは基本的にはHadoopを使った処理ですが、Hadoopを利用しない特定のサーバ単体での処理を登録することもできます。
ジョブフローは一連の処理であり、ジョブフローの進捗によってステータスが変わっていきます。ジョブフローのステータスは「STARTING」、「BOOTSTRAPPING」、「RUNNING」…と変化していきます。それぞれのステータスについてまとめるとこのようになります。
状態 | ステータス | 説明 | |
---|---|---|---|
ジョブフロー起動 | STARTING | EC2インスタンスの起動やHadoopクラスタの構築 | |
ブートストラップアクション | BOOTSTRAPPING | Hadoopクラスタの環境構成のカスタマイズなどを行う | |
ステップ処理 | RUNNING | ステップ処理が実行されている | |
待機状態 | WAITING | ジョブフローが作業指示を待っている | |
シャットダウン | SHUTTING_DOWN | ジョブフローがHadoopクラスタを終了している | |
ジョブフロー完了 | TERMINATED | ジョブフローが完了している | |
それぞれのステップでもステータス遷移がありますが、こちらは「PENDING」、「RUNNING」、「COMPLETED」の順にステータンスが変化していきます。もしステップがエラーで失敗した場合には「FAILED」というステータスになり、以降のステップはすべて「PENDING」となります。
実は、EMRは起動時にEC2インスタンスを起動しますが、そのインスタンスは「マスターインスタンスグループ」、「コアインスタンスグループ」、「タスクインスタンスグループ」という3つのグループのいずれかに属します。それぞれの役割は以下の通りです。
グループ | 説明 | 役割 | |
---|---|---|---|
マスター | ジョブフロー全体の構成管理などを行う ジョブフローの中で複数台は起動できず、必ず1台のみ起動する |
ジョブトラッカー、 ネームノード |
|
コア | HDFSを持っており、実際にデータを読み込みつつデータ処理を行う ひとつのジョブフローに対して複数存在できる |
タスクトラッカー、 データノード |
|
タスク | データは持たないがデータ処理のためにリソース提供することが可能 複数存在できるし、必要なければ存在しなくてもよい |
タスクトラッカー | |
これらのインスタンスグループの関係をまとめると次の図のようになります。EMR内で起動されるHadoopクラスタの中で、各ノードがいずれかのインスタンスグループに属している、というイメージです。
Copyright © ITmedia, Inc. All Rights Reserved.