Amazon EMR
管理ガイド

Amazon EMR の概要

このトピックでは、クラスターに作業を送信する方法、データが処理方法、処理中のクラスターの状態の変化など、Amazon EMR クラスターの概要を示します。

クラスターおよびノードについて

Amazon EMR の中心的なコンポーネントは、クラスターです。クラスターとは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのコレクションのことです。クラスター内の各インスタンスは、ノードと呼ばれます。各ノードには、クラスター内での役割があり、ノードタイプと呼ばれます。Amazon EMR は、各ノードタイプにさまざまなソフトウェアコンポーネントもインストールし、Apache Hadoop などの分散型アプリケーションでの役割を各ノードに付与します。

Amazon EMR のノードタイプは、次のとおりです。

  • マスターノード: 処理を行うために他のノード間でのデータおよびタスクの分散を調整するソフトウェアコンポーネントを実行することで、クラスターを管理するノードです。マスターノードは、タスクのステータスを追跡し、クラスターの状態を監視します。すべてのクラスターにはマスターノードがあり、マスターノードのみで 1 つのノードクラスターを作成することができます。

  • コアノード: タスクを実行し、クラスター上の Hadoop Distributed File System (HDFS) にデータを保存するソフトウェアコンポーネントを持つノードです。マルチノードクラスターには、少なくとも 1 つのコアノードがあります。

  • タスクノード: タスクを実行するのみで、HDFS にデータを保存しないソフトウェアコンポーネントを持つノードです。タスクノードはオプションです。

次の図に、マスターノード 1 つとコアノード 4 つが存在するクラスターを示します。

クラスターへの作業の送信

Amazon EMR でクラスターを実行する場合、行う必要があるワークを指定する方法についてはいくつかのオプションがあります。

  • クラスターの作成時にステップとして指定する関数で実行するワークの、完全な定義を提供します。これは、通常、一定量のデータを処理し処理が完了したときに終了するクラスターに対して実行されます。

  • 長時間稼働クラスターを作成し、Amazon EMR コンソール、Amazon EMR API、または AWS CLI を使用してステップを送信します。ステップには、1 つ以上のジョブが含まれている場合があります。詳細については、「クラスターへの作業の送信」を参照してください。

  • クラスターを作成し、SSH を使用してマスターノードや必要に応じて他のノードに接続して、インストール済みアプリケーションが提供するインターフェイスを使用します。これにより、スクリプト化を使用するか、インタラクティブにタスクを実行し、クエリを送信します。詳細については、「Amazon EMR リリース ガイド」を参照してください。

データの処理

クラスターを起動するとき、データ処理の必要に合わせてインストールするフレームワークとアプリケーションを選択します。Amazon EMR クラスターでデータを処理するには、インストールされたアプリケーションにジョブまたはクエリを直接送信するか、クラスターでステップを実行することもできます。

アプリケーションへのジョブの直接送信

Amazon EMR クラスターにインストールされたソフトウェアを使用し、直接ジョブを送信して操作できます。これを行うには、通常安全な接続経由でマスターノードに接続し、クラスターで直接実行されるソフトウェアに使用できるインターフェイスとツールにアクセスします。詳細については、「クラスターに接続する」を参照してください。

ステップの実行によるデータの処理

Amazon EMR クラスターには、1 つ以上のステップを順番に並べて送信できます。各ステップは、クラスターにインストールされたソフトウェアにより処理するためのデータを操作する指示が含まれる作業単位です。

4 つのステップを使用した処理の例を次に示します。

  1. 処理のために入力データセットを送信する

  2. Pig プログラムを使用して、最初のステップの出力を処理する.

  3. Hive プログラムを使用して 2 番目の入力データセットを処理する

  4. 出力データセットを書き込む

通常、Amazon EMR でデータを処理する場合、入力とは、選択した基になるファイルシステム (Amazon S3 や HDFS など) にファイルとして保存されるデータのことです。このデータは、処理シーケンスの次のステップに移動します。最後のステップで、出力データが指定された場所 (Amazon S3 バケットなど) に書き込まれます。

ステップは、次の順序で実行されます。

  1. リクエストが送信され、ステップの処理が開始されます。

  2. すべてのステップの状態が [PENDING (保留中)] になります。

  3. シーケンスの最初のステップが開始されると、その状態が [RUNNING (実行中)] に変わります。他のステップは、[PENDING (保留中)] 状態のままです。

  4. 最初のステップが完了すると、その状態が [COMPLETED (完了済み)] に変わります。

  5. シーケンスの次のステップが開始され、その状態が [RUNNING (実行中)] に変わります。完了すると、その状態が [COMPLETED (完了済み)] に変わります。

  6. すべてのステップが完了し、処理が終了するまで、ステップごとにこのパターンが繰り返されます。

次の図に、ステップが処理される際のステップシーケンスと状態の変化を示します。

ステップが処理に失敗した場合、その状態は [TERMINATED_WITH_ERRORS] に変わります。ステップごとに、次に実行する処理を指定できます。デフォルトでは、シーケンスの残りのステップはすべて [CANCELLED (キャンセル済み)] に設定され、実行されません。エラーを無視し、残りのステップを続行するか、ただちにクラスターを終了する選択ができます。

次の図に、処理中にステップが失敗した場合のステップシーケンスと状態のデフォルトの変化を示します。

クラスターライフサイクルについて

成功した Amazon EMR クラスターは次のプロセスに従います。

  1. 最初に、Amazon EMR は指定に従って、各インスタンスのクラスターで EC2 インスタンスをプロビジョニングします。詳細については、「クラスターハードウェアとネットワークを構成する」を参照してください。Amazon EMR は、すべてのインスタンスに対して、Amazon EMR 用のデフォルト AMI または指定するカスタム Amazon Linux AMI を使用します。詳細については、「カスタム AMI の使用」を参照してください。このフェーズの間、クラスターの状態は STARTING です。

  2. 各インスタンスで指定したブートストラップアクションが Amazon EMR によって実行されます。ブートストラップアクションを使用してカスタムアプリケーションをインストールし、必要なカスタマイズを実行できます。詳細については、「追加のソフトウェアをインストールするためのブートストラップアクションの作成」を参照してください。このフェーズの間、クラスターの状態は BOOTSTRAPPING です。

  3. Amazon EMR は、Hive、Hadoop、Spark など、クラスターの作成時に指定するネイティブアプリケーションをインストールします。

  4. ブートストラップアクションが正常に完了し、ネイティブアプリケーションがインストールされると、クラスターの状態は RUNNING になります。この時点で、クラスターインスタンスに接続できます。クラスターは、クラスターの作成時に指定されたステップを順番に実行します。前のステップの完了後に実行される追加のステップを送信できます。詳細については、「CLI およびコンソールを使用した手順の作業」を参照してください。

  5. ステップが正常に実行されると、クラスターは WAITING 状態になります。最後のステップの完了後に自動終了するようクラスターが設定されている場合は、SHUTTING_DOWN 状態になります。

  6. すべてのインスタンスが削除された後、クラスターは COMPLETED 状態になります。

クラスターのライフサイクル中にエラーが発生すると、削除保護を有効にしていない限り、Amazon EMR はクラスターとそのすべてのインスタンスを削除します。エラーのためにクラスターが終了した場合、そのクラスターに保存されているデータは削除され、クラスターの状態は FAILED に設定されます。削除保護を有効にした場合、クラスターからデータを取得し、削除保護を解除してクラスターを終了できます。詳細については、「削除保護の使用」を参照してください。