

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

# Amazon EMR のアーキテクチャとサービスレイヤー
アーキテクチャとサービスレイヤー

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

**Topics**
+ [

## Storage
](#emr-arch-storage)
+ [

## クラスターリソース管理
](#emr-arch-resource-management)
+ [

## データ処理フレームワーク
](#emr-arch-processing-frameworks)
+ [

## アプリケーションとプログラム
](#emr-arch-applications)

## Storage


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

### Hadoop Distributed File System（HDFS）


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)


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

### ローカルファイルシステム


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

## クラスターリソース管理


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

デフォルトでは、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 ファイルで直接変更したりすると、この機能が停止したり、この機能が変更されたりする可能性があります。

## データ処理フレームワーク


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

### Hadoop MapReduce


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


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*」を参照してください。

## アプリケーションとプログラム


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/)」を参照してください。