Amazon EMR
管理ガイド

Amazon EMR のメリット

Amazon EMR を使用することには多くのメリットがあります。このセクションでは、このようなメリットの概要と、詳しい情報へのリンクを示します。

コスト削減

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

注記

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

料金のオプションと詳細については、「Amazon EMR 料金表」を参照してください。

AWS 統合

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

デプロイ

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

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

スケーラビリティと柔軟性

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

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

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

信頼性

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

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

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

セキュリティ

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

IAM

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

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

セキュリティグループ

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

暗号化

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

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

詳細については、Amazon EMR リリース ガイド の「EMRFS を使用した Amazon S3 データの暗号化」を参照してください。

Amazon VPC

Amazon EMR では、Amazon VPC の Virtual Private Cloud (VPC) におけるクラスターの起動がサポートされます。VPC は AWS 内の分離された仮想ネットワークであり、ネットワーク設定およびアクセスの細かい側面をコントロールできます。詳細については、「ネットワーキングを設定する」を参照してください。

AWS CloudTrail

Amazon EMR は、AWS アカウントが実行したリクエストやアカウントの代わりに実行されたリクエストに関する情報をログ記録するため、CloudTrail と統合されています。この情報を使用すると、クラスターにアクセスしたユーザーや日時に加え、リクエストの生成元 IP アドレスを追跡できます。詳細については、「AWS CloudTrail での Amazon EMR API 呼び出しのログ記録 」を参照してください。

Amazon EC2 のキーペア

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

モニタリング

Amazon EMR 管理インターフェイスとログファイルを使用すると、障害やエラーなどのクラスターの問題をトラブルシューティングできます。Amazon EMR には、Amazon S3 にログファイルをアーカイブする機能が備わっているため、クラスターが終了した後でもログを保存して問題をトラブルシューティングすることができます。Amazon EMR の Amazon EMR コンソールには、オプションのデバッグツールも用意されており、ステップ、ジョブ、タスクに基づいてログファイルを参照できます。詳細については、「クラスタログとデバッグを構成する」を参照してください。

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

管理インターフェイス

Amazon EMR とやり取りする方法はいくつかあります。

  • コンソール — クラスターの起動と管理に使用できるグラフィカルユーザーインターフェイス。起動するクラスターの詳細をウェブフォームに入力することで指定し、既存のクラスターの詳細を確認して、クラスターのデバッグや終了を行うことができます。コンソールは、最も簡単に Amazon EMR の使用を開始する手段です。プログラミングの知識は必要ありません。コンソールは、https://console.aws.amazon.com//elasticmapreduce/home からオンラインで使用できます。

  • AWS Command Line Interface (AWS CLI) — Amazon EMR に接続し、クラスターを作成して管理するためにローカルマシンで実行するクライアントアプリケーション。AWS CLI には、機能が豊富な Amazon EMR 固有のコマンド一式が含まれています。これを利用すると、クラスターの起動と管理のプロセスをスクリプトで自動化できます。コマンドラインから作業する場合は、AWS CLI を使用するのが最適の選択肢です。詳細については、AWS CLI Command Reference の「Amazon EMR」を参照してください。

  • ソフトウェア開発キット (SDK) — SDK には、Amazon EMR を呼び出してクラスターを作成し、管理する機能が備わっています。これを利用すると、クラスターの作成や管理のプロセスを自動化するアプリケーションを作成できます。Amazon EMR の機能を拡張したりカスタマイズしたりするには、SDK が最適の選択肢です。Amazon EMR は、現在次の SDK で使用可能です。Go、Java、.NET (C# および VB.NET)、Node.js、PHP、Python、および Ruby。これらの SDK の詳細については、「AWS のツール」および「Amazon EMR サンプルコード & ライブラリ」を参照してください。

  • Web Service API — JSON を使用して直接ウェブサービスを呼び出すことができる低レベルインターフェイスです。Amazon EMR を呼び出すカスタム SDK を作成するには、この API が一番の選択肢です。詳細については、Amazon EMR API Reference を参照してください。