

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR とは
<a name="emr-what-is-emr"></a>

以前は Amazon Elastic MapReduce と呼ばれていた Amazon EMR は、[Apache Hadoop](https://aws.amazon.com/elasticmapreduce/details/hadoop) や [Apache Spark](https://aws.amazon.com/elasticmapreduce/details/spark) などのビッグデータフレームワークの実行を簡素化 AWS し、大量のデータを処理および分析するマネージドクラスタープラットフォームです。これらのフレームワークと、関連するオープンソースプロジェクトを使用することで、分析用のデータやビジネスインテリジェンスワークロードを処理できます。Amazon EMR を使用して、大量のデータを変換し、Amazon Simple Storage Service (Amazon S3) や Amazon DynamoDB などの他の AWS データストアやデータベースにデータを出し入れすることもできます。

Amazon EMR を初めて使用する方には、このセクションと併せて、次のセクションを初めに読むことをおすすめします。
+ [Amazon EMR](https://aws.amazon.com/elasticmapreduce/) – このサービスページには、Amazon EMR のハイライト、製品詳細、料金情報が掲載されています。
+ [チュートリアル: Amazon EMR の使用開始](emr-gs.md) — このチュートリアルを使用すると、Amazon EMR をすぐに使い始めることができます。

**Topics**
+ [Amazon EMR クラスターを作成して使用する方法を理解する](emr-overview.md)
+ [Amazon EMR を使用する利点](emr-overview-benefits.md)
+ [Amazon EMR のアーキテクチャとサービスレイヤー](emr-overview-arch.md)

# Amazon EMR クラスターを作成して使用する方法を理解する
<a name="emr-overview"></a>

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

**Topics**
+ [クラスターとノードに慣れる](#emr-overview-clusters)
+ [クラスターへのワークの送信](#emr-work-cluster)
+ [データの処理](#emr-overview-data-processing)
+ [クラスターライフサイクルについて](#emr-overview-cluster-lifecycle)

## クラスターとノードに慣れる
<a name="emr-overview-clusters"></a>

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

 Amazon EMR のノードタイプは、次のとおりです。
+ **プライマリノード**: 処理を行うために他のノード間でのデータおよびタスクの分散を調整するソフトウェアコンポーネントを実行することで、クラスターを管理するノードです。プライマリノードは、タスクのステータスを追跡し、クラスターの状態を監視します。すべてのクラスターにはプライマリノードがあり、プライマリノードのみで 1 つのノードクラスターを作成できます。
+ **コアノード**: タスクを実行し、クラスター上の Hadoop Distributed File System (HDFS) にデータを保存するソフトウェアコンポーネントを持つノードです。マルチノードクラスターには、少なくとも 1 つのコアノードがあります。
+ **タスクノード**: タスクを実行するのみで、HDFS にデータを保存しないソフトウェアコンポーネントを持つノードです。タスクノードはオプションです。

## クラスターへのワークの送信
<a name="emr-work-cluster"></a>

Amazon EMR でクラスターを実行する場合、行う必要があるワークを指定する方法についてはいくつかのオプションがあります。
+ クラスターの作成時にステップとして指定する関数で実行するワークの、完全な定義を提供します。これは、通常、一定量のデータを処理し処理が完了したときに終了するクラスターに対して実行されます。
+ 長時間実行されるクラスターを作成し、Amazon EMR コンソール、Amazon EMR API、または AWS CLI を使用して、1 つ以上のジョブを含むステップを送信します。詳細については、「[作業を Amazon EMR クラスターに送信する](emr-work-with-steps.md)」を参照してください。
+ クラスターを作成し、SSH を使用してプライマリノードや必要に応じて他のノードに接続して、インストール済みアプリケーションが提供するインターフェイスを使用します。これにより、スクリプト化を使用するか、インタラクティブにタスクを実行し、クエリを送信します。詳細については、「[Amazon EMR リリースガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)」を参照してください。

## データの処理
<a name="emr-overview-data-processing"></a>

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

### アプリケーションへのジョブの直接送信
<a name="emr-overview-submitting-jobs"></a>

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

### ステップの実行によるデータの処理
<a name="emr-overview-steps"></a>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

![\[さまざまなクラスターステップの状態を示す Amazon EMR のシーケンス図。\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/step-sequence.png)


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

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

![\[前のクラスターステップが失敗したときにその後のステップがどうなるかを示す Amazon EMR のシーケンス図。\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/step-sequence-failed.png)


## クラスターライフサイクルについて
<a name="emr-overview-cluster-lifecycle"></a>

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

1. 最初に、Amazon EMR は指定に従って、各インスタンスのクラスターで EC2 インスタンスをプロビジョニングします。詳細については、「[Amazon EMR クラスターハードウェアとネットワークを設定する](emr-plan-instances.md)」を参照してください。Amazon EMR は、すべてのインスタンスに対して、Amazon EMR 用のデフォルト AMI または指定するカスタム Amazon Linux AMI を使用します。詳細については、「[カスタム AMI を使用して Amazon EMR クラスター設定の柔軟性を高める](emr-custom-ami.md)」を参照してください。このフェーズの間、クラスターの状態は `STARTING` です。

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

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

1. ブートストラップアクションが正常に完了し、ネイティブアプリケーションがインストールされると、クラスターの状態は `RUNNING` になります。この時点で、クラスターインスタンスに接続できます。クラスターは、クラスターの作成時に指定されたステップを順番に実行します。前のステップの完了後に実行される追加のステップを送信できます。詳細については、「[作業を Amazon EMR クラスターに送信する](emr-work-with-steps.md)」を参照してください。

1. ステップが正常に実行されると、クラスターは `WAITING` 状態になります。最後のステップの完了後に自動終了するようクラスターが設定されている場合は、`TERMINATING` 状態になり、次に `TERMINATED` 状態になります。クラスターが待機するように設定されている場合は、不要になったときに手動でシャットダウンする必要があります。クラスターを手動でシャットダウンすると、クラスターは `TERMINATING` 状態になり、次に `TERMINATED` 状態になります。

クラスターのライフサイクル中にエラーが発生すると、削除保護を有効にしていない限り、Amazon EMR はクラスターとそのすべてのインスタンスを終了させます。エラーのためにクラスターが終了した場合、そのクラスターに保存されているデータは削除され、クラスターの状態は `TERMINATED_WITH_ERRORS` に設定されます。削除保護を有効にした場合、クラスターからデータを取得し、削除保護を解除してクラスターを終了できます。詳細については、「[Amazon EMR クラスターを誤ったシャットダウンから保護するための終了保護の使用](UsingEMR_TerminationProtection.md)」を参照してください。

次の図は、クラスターのライフサイクルと、ライフサイクルの各ステージが特定のクラスターの状態にどのようにマッピングされるかを表しています。

![\[クラスターのライフサイクルと、ライフサイクルの各ステージが特定のクラスターの状態にどのようにマッピングされるかを示す Amazon EMR の図。\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/emr-cluster-lifecycle.png)


# Amazon EMR を使用する利点
<a name="emr-overview-benefits"></a>

Amazon EMR を使用することには多くのメリットがあります。これには、 を通じて提供される柔軟性 AWS と、独自のオンプレミスリソースを構築する場合と比較して利用可能なコスト削減が含まれます。このセクションでは、このようなメリットの概要と、詳しい情報へのリンクを示します。

**Topics**
+ [コスト削減](#emr-benefits-cost)
+ [AWS 統合](#emr-benefits-integration)
+ [デプロイメント](#emr-benefits-deployment)
+ [スケーラビリティと柔軟性](#emr-benefits-scalability)
+ [信頼性](#emr-benefits-reliability)
+ [セキュリティ](#emr-benefits-security)
+ [モニタリング](#emr-benefits-monitoring)
+ [管理インターフェイス](#emr-what-tools)

## コスト削減
<a name="emr-benefits-cost"></a>

Amazon EMR の料金は、デプロイするインスタンスタイプと Amazon EC2 インスタンスの数、およびクラスターを起動するリージョンによって異なります。オンデマンド料金は低価格ですが、リザーブドインスタンスまたはスポットインスタンスを購入すると、コストをさらに抑えることができます。スポットインスタンスを利用すると大幅に節約できます。場合によっては、オンデマンド料金の 10 分の 1 になります。

**注記**  
EMR クラスターとともに Amazon S3、Amazon Kinesis、または DynamoDB を使用している場合、Amazon EMR の利用とは別個に請求されるサービスについては追加料金が発生します。

**注記**  
プライベートサブネットに Amazon EMR クラスターを設定するときは、[Amazon S3 の VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)も設定することをお勧めします。EMR クラスターが Amazon S3 の VPC エンドポイントのないプライベートサブネットに存在する場合、EMR クラスターと S3 間のトラフィックは VPC 内にとどまらないため、S3 トラフィックに関連する追加の NAT ゲートウェイ料金が発生します。

料金のオプションと詳細については、「[Amazon EMR 料金表](https://aws.amazon.com/elasticmapreduce/pricing/)」を参照してください。

## AWS 統合
<a name="emr-benefits-integration"></a>

Amazon EMR は他の AWS サービスと統合して、クラスターのネットワーク、ストレージ、セキュリティなどに関連する機能を提供します。次のリストに、この統合の例をいくつか示します。
+ クラスターのノードを構成するインスタンスの Amazon EC2
+ インスタンスを起動する仮想ネットワークを設定するための Amazon Virtual Private Cloud (Amazon VPC)
+ 入力データと出力データを保存するための Amazon S3
+ クラスターのパフォーマンスを監視し、アラームを設定する Amazon CloudWatch
+ AWS Identity and Access Management アクセス許可を設定するための (IAM)
+ AWS CloudTrail サービスに対して行われたリクエストを監査する
+ AWS Data Pipeline クラスターをスケジュールして起動するには
+ AWS Lake Formation Amazon S3 データレイク内のデータを検出、カタログ化、保護するには

## デプロイメント
<a name="emr-benefits-deployment"></a>

EMR クラスターは、クラスターに送信した処理を実行する EC2 インスタンスで構成されます。クラスターを起動すると、選択したアプリケーション (Apache Hadoop や Spark など) を使用してインスタンスが Amazon EMR により構成されます。クラスターの処理の必要に最も合うインスタンスサイズとタイプを選択します (バッチ処理、レイテンシークエリ、ストリーミングデータ、または大容量データストレージ)。Amazon EMR で利用可能なインスタンスタイプの詳細については、「[Amazon EMR クラスターハードウェアとネットワークを設定する](emr-plan-instances.md)」を参照してください。

Amazon EMR には、クラスター上のソフトウェアを設定するためのさまざまな方法があります。たとえば、Amazon EMR リリースは、Hadoop などの多用途フレームワークと Hive、Pig、Spark などのアプリケーションを含むアプリケーションセットを選択してインストールできます。いくつかの MapR ディストリビューションの 1 つをインストールすることもできます。Amazon EMR は Amazon Linux を使用するため、yum パッケージマネージャで、またはソースから手動でクラスターにソフトウェアをインストールすることもできます。詳細については、「[Amazon EMR クラスターを起動するときにアプリケーションを設定する](emr-plan-software.md)」を参照してください。

## スケーラビリティと柔軟性
<a name="emr-benefits-scalability"></a>

Amazon EMR には、コンピューティングニーズの変化に合わせてクラスターを拡大または縮小できる柔軟性が備わっています。クラスターのサイズを変更し、ピークワークロード用にインスタンスを追加したり、ピークワークロードが減少したときにインスタンスを削除してコストをコントロールしたりすることができます。詳細については、「[実行中の Amazon EMR クラスターのサイズを手動で変更する](emr-manage-resize.md)」を参照してください。

 Amazon EMR には、複数のインスタンスグループを実行することにより、あるグループでオンデマンドインスタンスを使用して処理能力を保証すると同時に、別のグループでスポットインスタンスを使用してジョブを高速に低コストで完了できるようにするオプションも用意されています。異なるインスタンスタイプを混ぜて、別のインスタンスタイプよりも有利なスポットインスタンスタイプの料金を活かすこともできます。詳細については、「[スポットインスタンスを使用すべき場合](emr-plan-instances-guidelines.md#emr-plan-spot-instances)」を参照してください。

さらに、Amazon EMR には入力データ、出力データ、中間データに複数のファイルシステムを使用する柔軟性も備わっています。例えば、クラスターのライフサイクル後は保存する必要がないデータを処理するために、クラスターのプライマリノードとコアノードで実行される Hadoop 分散ファイルシステム (HDFS) を選択することができます。Amazon S3 をクラスターで実行されるアプリケーションのデータレイヤーとして使用するために EMR File System (EMRFS) を選択し、コンピューティングとストレージを分離して、データをクラスターのライフサイクル外に保持することができます。EMRFS には、コンピューティングのニーズとストレージのニーズそれぞれに合わせて拡大または縮小できるという利点もあります。コンピューティングのニーズが変化した場合はクラスターのサイズを変更することができ、ストレージのニーズが変化した場合は Amazon S3 を使用することができます。詳細については、「[Amazon EMR でのストレージおよびファイルシステムの使用](emr-plan-file-systems.md)」を参照してください。

## 信頼性
<a name="emr-benefits-reliability"></a>

Amazon EMR は、クラスター内のノードを監視し、障害が発生した場合はインスタンスを自動的に終了して置き換えます。

Amazon EMR には、クラスターの終了方法 (自動または手動) をコントロールする設定オプションが用意されています。クラスターが自動的に終了されるように設定した場合、すべてのステップが完了すると終了されます。これは一時的なクラスターと呼ばれます。一方、クラスターが必要なくなったときに手動で終了を選択できるように、処理が完了した後もクラスターが実行され続けるように設定することもできます。または、クラスターを作成して、インストールされたアプリケーションを直接操作した後、必要なくなった時に手動で終了することもできます。このようなクラスターは*長時間稼働クラスター*と呼ばれます。

さらに、削除保護を設定し、処理中にエラーや問題が発生した場合にクラスター内のインスタンスが削除されないようにすることもできます。終了保護が有効になると、終了前にインスタンスからデータを回復できます。これらのオプションのデフォルト設定は、クラスターの起動方法 (コンソール、CLI、または API) によって異なります。詳細については、「[Amazon EMR クラスターを誤ったシャットダウンから保護するための終了保護の使用](UsingEMR_TerminationProtection.md)」を参照してください。

## セキュリティ
<a name="emr-benefits-security"></a>

Amazon EMR は、IAM や Amazon VPC などの他の AWS サービス、および Amazon EC2 キーペアなどの機能を活用して、クラスターやデータを保護できます。

### IAM
<a name="emr-benefits-iam"></a>

Amazon EMR は、アクセス権限を管理するため IAM と統合されています。アクセス権限は、ユーザーまたは IAM グループにアタッチする IAM ポリシーを使用して定義します。ポリシーで定義したアクセス権限により、それらのユーザーまたはグループのメンバーが実行できるアクションと、アクセスできるリソースが決まります。詳細については、「[Amazon EMR で IAM が機能する仕組み](security_iam_service-with-iam.md)」を参照してください。

さらに、Amazon EMR は Amazon EMR サービス自体の IAM ロールとインスタンスの EC2 インスタンスプロファイルを使用します。これらのロールは、サービスおよびインスタンスがユーザーに代わって他の AWS サービスにアクセスするためのアクセス許可を付与します。Amazon EMR サービスのデフォルトロールと EC2 インスタンスプロファイルのデフォルトロールが存在します。デフォルトのロールは AWS 管理ポリシーを使用します。このポリシーは、コンソールから EMR クラスターを初めて起動し、デフォルトのアクセス許可を選択するときに自動的に作成されます。デフォルト IAM ロールは、 AWS CLIから作成することもできます。の代わりにアクセス許可を管理する場合は AWS、サービスとインスタンスプロファイルのカスタムロールを選択できます。詳細については、「[サービスおよびリソースへの Amazon EMR アクセス許可の IAM AWS サービスロールを設定する](emr-iam-roles.md)」を参照してください。

### セキュリティグループ
<a name="emr-benefits-security-groups"></a>

Amazon EMR は、セキュリティグループを使用して、EC2 インスタンスのインバウンドトラフィックとアウトバウンドトラフィックをコントロールします。クラスターを起動すると、Amazon EMR はプライマリインスタンスのセキュリティグループと、コアインスタンス/タスクインスタンスによって共有されるセキュリティグループを使用します。Amazon EMR は、クラスター内のインスタンス間の通信を確実にするために、セキュリティグループルールを設定します。オプションで、追加のセキュリティグループを設定し、高度なルールで、プライマリインスタンスとコア/タスクインスタンスにそのグループを割り当てることができます。詳細については、「[Amazon EMR クラスターのセキュリティグループを使用してネットワークトラフィックを制御する](emr-security-groups.md)」を参照してください。

### 暗号化
<a name="emr-benefits-encryption"></a>

Amazon EMR では、Amazon S3 に保存するデータを保護できるようにするため、EMRFS を使用したオプションの Amazon S3 サーバー側の暗号化とクライアント側の暗号化がサポートされます。サーバー側の暗号化を使うと、Amazon S3 はアップロード後にデータを暗号化します。

クライアント側の暗号化を使用すると、暗号化および復号プロセスは EMR クラスターの EMRFS で行われます。( AWS Key Management Service AWS KMS) または独自のキー管理システムを使用して、クライアント側の暗号化用のルートキーを管理します。

詳細については、「[EMRFS プロパティを使用して Amazon S3 の暗号化を指定する](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-emrfs-encryption.html)」を参照してください。

### Amazon VPC
<a name="emr-benefits-vpc"></a>

Amazon EMR は、Amazon VPC の仮想プライベートクラウド (VPC) におけるクラスターの起動をサポートします。VPC は、ネットワーク設定とアクセスの高度な側面を制御する機能 AWS を提供する の独立した仮想ネットワークです。詳細については、「[Amazon EMR 用の VPC でネットワークを設定する](emr-plan-vpc-subnet.md)」を参照してください。

### AWS CloudTrail
<a name="emr-benefits-cloudtrail"></a>

Amazon EMR は CloudTrail と統合して、アカウントによって、または AWS アカウントに代わって行われたリクエストに関する情報をログに記録します。この情報を使用すると、クラスターにアクセスしたユーザーや日時に加え、リクエストの生成元 IP アドレスを追跡できます。詳細については、「[を使用した AWS EMR API コールのログ記録 AWS CloudTrail](logging-using-cloudtrail.md)」を参照してください。

### Amazon EC2 のキーペア
<a name="emr-benefits-key-pairs"></a>

リモートコンピュータとプライマリノードの間で安全な接続を確立することにより、クラスターを監視して操作できます。Secure Shell (SSH) ネットワークプロトコルを使用して接続するか、Kerberos で認証することができます。SSH を使用する場合は Amazon EC2 キーペアが必要です。詳細については、「[Amazon EMR の SSH 認証情報に EC2 キーペアを使用する](emr-plan-access-ssh.md)」を参照してください。

## モニタリング
<a name="emr-benefits-monitoring"></a>

Amazon EMR 管理インターフェイスとログファイルを使用して、障害やエラーなどのクラスターの問題をトラブルシューティングできます。Amazon EMR には、ログファイルを Amazon S3 にアーカイブする機能があるため、クラスターの終了後でもログを保存し、問題のトラブルシューティングを行うことができます。Amazon EMR には、Amazon EMR コンソールで、ステップ、ジョブ、およびタスクに基づいてログファイルを参照するためのオプションのデバッグツールも用意されています。詳細については、「[Amazon EMR クラスターのログ記録とデバッグを設定する](emr-plan-debugging.md)」を参照してください。

Amazon EMR は、クラスターとクラスター内のジョブのパフォーマンスメトリクスを追跡するため、CloudWatch と統合されています。クラスターがアイドル状態かどうかや使用されているストレージの割合など、さまざまなメトリクスに基づいてアラームを設定できます。詳細については、「[CloudWatch で Amazon EMR のメトリクスをモニタリングする](UsingEMR_ViewingMetrics.md)」を参照してください。

## 管理インターフェイス
<a name="emr-what-tools"></a>

 Amazon EMR とやり取りする方法はいくつかあります。
+ **コンソール** — クラスターの起動と管理に使用できるグラフィカルユーザーインターフェイス。起動するクラスターの詳細をウェブフォームに入力することで指定し、既存のクラスターの詳細を確認して、クラスターのデバッグや終了を行うことができます。コンソールは、最も簡単に Amazon EMR の使用を開始する手段です。プログラミングの知識は必要ありません。コンソールは、[https://console.aws.amazon.com/elasticmapreduce/home](https://console.aws.amazon.com/elasticmapreduce/home) からオンラインで使用できます。
+ **AWS Command Line Interface (AWS CLI)** — Amazon EMR に接続し、クラスターを作成および管理するためにローカルマシンで実行するクライアントアプリケーション。には、Amazon EMR に固有の機能豊富なコマンドのセット AWS CLI が含まれています。これを利用すると、クラスターの起動と管理のプロセスをスクリプトで自動化できます。コマンドラインから作業する場合は、 を使用するのが最適なオプション AWS CLI です。詳細については、「[https://docs.aws.amazon.com/cli/latest/reference/emr/index.html](https://docs.aws.amazon.com/cli/latest/reference/emr/index.html) コマンドリファレンス*」の「AWS CLI Amazon EMR*」を参照してください。
+ **Software Development Kit (SDK)** — SDK には、Amazon EMR を呼び出してクラスターを作成し、管理する機能が備わっています。これを利用すると、クラスターの作成や管理のプロセスを自動化するアプリケーションを作成できます。Amazon EMR の機能を拡張したりカスタマイズしたりするには、SDK が最適の選択肢です。Amazon EMR は現在、次の SDK で使用可能です。Go、Java、.NET (C\$1 および VB.NET)、Node.js、PHP、Python、および Ruby。これらの SDK の詳細については、「[AWSのツール](https://aws.amazon.com/tools/)」および「[Amazon EMR サンプルコード & ライブラリ](https://docs.aws.amazon.com/code-library/latest/ug/emr_code_examples.html)」を参照してください。
+ **Web Service API** – JSON を使用して直接ウェブサービスを呼び出すことができる低レベルインターフェイスです。Amazon EMR を呼び出すカスタム SDK を作成するには、この API が最適の選択肢です。詳細については、「[Amazon EMR API リファレンス](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/Welcome.html)」を参照してください。

# Amazon EMR のアーキテクチャとサービスレイヤー
<a name="emr-overview-arch"></a>

Amazon EMR サービスアーキテクチャは複数のレイヤーで構成されており、各レイヤーはクラスターに特定の機能を提供します。このセクションでは、各レイヤーとコンポーネントの概要を紹介します。

**Topics**
+ [Storage](#emr-arch-storage)
+ [クラスターリソース管理](#emr-arch-resource-management)
+ [データ処理フレームワーク](#emr-arch-processing-frameworks)
+ [アプリケーションとプログラム](#emr-arch-applications)

## Storage
<a name="emr-arch-storage"></a>

ストレージレイヤーには、クラスターで使用されるさまざまなファイルシステムが含まれています。次のように、さまざまなタイプのストレージオプションがあります。

### Hadoop Distributed File System（HDFS）
<a name="emr-storage-hdfs"></a>

Hadoop Distributed File System (HDFS) は Hadoop が採用する、分散型のスケーラブルなファイルシステムです。HDFS はデータをクラスター内の各インスタンスに分散して保存します。データの複数のコピーが複数のインスタンスに保存されるため、個々のインスタンスが障害を起こしてもデータが失われることはありません。HDFS はエフェメラルストレージであり、クラスターを終了するときに消去されます。HDFS は MapReduce 処理中に中間結果をキャッシュしたり、大きなランダム I/O の発生するワークロードがある場合に便利です。

詳細については、このガイドの「[Amazon EMR でのインスタンスストレージのオプションと動作](emr-plan-storage.md)」か、Apache Hadoop ウェブサイトの「[HDFS User Guide](http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html)」を参照してください。

### EMR ファイルシステム (EMRFS)
<a name="emr-storage-emrfs"></a>

EMR ファイルシステム (EMRFS) を使用すると、Amazon EMR で Hadoop が拡張され、まるで HDFS などのファイルシステムのように、Amazon S3 に保存されたデータに直接アクセスできます。クラスターではファイルシステムとして HDFS または Amazon S3 のいずれかを使用できます。ほとんどの場合、Amazon S3 は入力データおよび出力データを格納する場合に使用され、中間結果は HDFS に格納されます。

### ローカルファイルシステム
<a name="emr-storage-lfs"></a>

ローカルファイルシステムとは、ローカルに接続されているディスクを指します。Hadoop クラスターを作成すると、インスタンスストアと呼ばれる、あらかじめアタッチされたディスクストレージのブロックが事前設定されている Amazon EC2 インスタンスから、各ノードが作成されます。インスタンスストアボリューム上のデータは、Amazon EC2 インスタンスのライフサイクル中のみ使用できます。

## クラスターリソース管理
<a name="emr-arch-resource-management"></a>

リソース管理レイヤーは、クラスターリソースの管理とデータを処理するジョブのスケジューリングを行います。

デフォルトでは、Amazon EMR は Apache Hadoop 2.0 に導入されたコンポーネントである YARN (Yet Another Resource Negotiator) を使用し、複数のデータ処理フレームワークのクラスターリソースを集中管理します。ただし、Amazon EMR で提供されているフレームワークやアプリケーションの中には、リソースマネージャーとして YARN を使用しないものも存在します。Amazon EMR の各ノードには、YARN コンポーネントの管理、クラスターの正常な状態の維持、Amazon EMR とのやり取りを行うエージェントもあります。

スポットインスタンスはタスクノードの実行に使用されることが多いため、Amazon EMR には、タスクノードが終了しても実行中のジョブが失敗しないように YARN ジョブをスケジュールするための機能がデフォルトで備えられています。Amazon EMR は、アプリケーションマスタープロセスをコアノードでのみ実行できるようにすることで、これを実現しています。アプリケーションマスタープロセスは実行中のジョブを制御し、ジョブが有効である間は存続する必要があります。

Amazon EMR リリース 5.19.0 以降では、組み込みの [YARN ノードラベル](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeLabel.html)機能を使用して、これを実現しています。(以前のバージョンではコードパッチを使用していました)。`yarn-site` と `capacity-scheduler` の設定分類のプロパティは、YARN capacity-scheduler と fair-scheduler がノードラベルを利用できるように、デフォルトで設定されます。Amazon EMR は、`CORE` ラベルでコアノードに自動的にラベルを付け、アプリケーションマスターが CORE ラベルを持つノードでのみスケジュールされるようにプロパティを設定します。yarn-site および capacity-scheduler 設定分類の関連プロパティを手動で変更したり、関連する XML ファイルで直接変更したりすると、この機能が停止したり、この機能が変更されたりする可能性があります。

## データ処理フレームワーク
<a name="emr-arch-processing-frameworks"></a>

データ処理フレームワークレイヤーは、データの処理と分析に使用されるエンジンです。YARN で実行されるフレームワークや、独自のリソース管理を持つフレームワークも多数用意 バッチ、インタラクティブ、メモリ内、ストリーミングなど、処理のニーズの種類に合わせて異なるフレームワークを使用できます。選択するフレームワークは、ユースケースによって異なります。これは、アプリケーションレイヤー (処理するデータの操作に使用されるレイヤー) から使用可能な言語とインターフェイスに影響を与えます。Amazon EMR で使用できる主な処理フレームワークは、Hadoop MapReduce と Spark です。

### Hadoop MapReduce
<a name="emr-processing-framework-mapreduce"></a>

Hadoop MapReduce は、分散コンピューティングのためのオープンソースプログラミングモデルです。これは、Map と Reduce という 2 つの機能を提供しながら、全てのロジックを処理することで並行分散アプリケーションを書くプロセスを単純化するものです。Map 機能は「中間結果」と呼ばれるキーと値のペアにデータをマップします。Reduce 機能は中間結果を集計し、追加アルゴリズムを適用して、最終出力を発生させます。MapReduce には、Hive など、Map プログラムと Reduce プログラムを自動的に生成する複数のフレームワークを使用できます。

詳細については、Apache Hadoop Wiki ウェブサイトの「[How map and reduce operations are actually carried out](http://wiki.apache.org/hadoop2/HadoopMapReduce)」を参照してください。

### Apache Spark
<a name="emr-processing-framework-spark"></a>

Spark は、ビッグデータワークロードの処理に役立つクラスターフレームワークおよびプログラミングモデルです。Hadoop MapReduce と同様、Spark はオープンソースの分散処理システムですが、実行プランには Directed Acyclic Graphs を使用し、データセットにはメモリ内キャッシュを利用します。Spark を Amazon EMR で実行すると、EMRFS を使用して Amazon S3 内のデータに直接アクセスできます。Spark では、SparkSQL などの複数のインタラクティブクエリモジュールがサポートされます。

詳細については、「[Amazon EMR リリース ガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html)」の「*Amazon EMR クラスターでの Apache Spark*」を参照してください。

## アプリケーションとプログラム
<a name="emr-arch-applications"></a>

Amazon EMR では、Hive、Pig、Spark Streaming ライブラリなどの多くのアプリケーションがサポートされ、高レベルな言語を使用したワークロード処理の作成、機械学習アルゴリズムの利用、ストリーミング処理アプリケーションの作成、データウェアハウスの構築などの機能が提供されます。加えて、Amazon EMR では、YARN を使用する代わりに独自のクラスター管理機能を持つオープンソースプロジェクトもサポートされます。

さまざまなライブラリと言語を使用して、Amazon EMR で実行したアプリケーションを操作します。たとえば、Java、Hive、Pig (MapReduce または Spark Streaming とともに使用)、Spark SQL、MLlib、GraphX (Spark とともに使用) を使用できます。

詳細については、「[Amazon EMR リリースガイド](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/)」を参照してください。