Amazon EMR アーキテクチャの概要 - Amazon EMR

Amazon EMR アーキテクチャの概要

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

ストレージ

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

Hadoop Distributed File System(HDFS)

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

詳細については、このガイドの「インスタンスストレージ」か、Apache Hadoop ウェブサイトの「HDFS User Guide」を参照してください。

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 ノードラベル機能を使用して、これを実現しています。(以前のバージョンではコードパッチを使用していました)。yarn-sitecapacity-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」を参照してください。

Apache Spark

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

詳細については、「Amazon EMR リリース ガイド」の「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 リリースガイド」を参照してください。