Amazon EMR でのストレージおよびファイルシステムの使用 - Amazon EMR

Amazon EMR でのストレージおよびファイルシステムの使用

Amazon EMR および Hadoop には、クラスターステップの処理に使用できるさまざまなファイルシステムが用意されています。どのファイルシステムを使用するかは、データへのアクセスに使用する URI のプレフィックスで指定します。例えば、s3://amzn-s3-demo-bucket1/path は、EMRFS を使用して Simple Storage Service (Amazon S3) バケットを参照します。次の表に、使用可能なファイルシステムと、それぞれの使用が推奨される条件を示します。

Amazon EMR および Hadoop は通常、クラスターを処理するときに以下のうち少なくとも 2 つのファイルシステムを使用します。HDFS と EMRFS は、Amazon EMR で使用される 2 つの主なファイルシステムです。

重要

Amazon EMR リリース 5.22.0 以降、Amazon EMR は AWS 署名バージョン 4 のみを使用して Amazon S3 へのリクエストを認証します。リリースノートに署名バージョン 4 のみが使用されることが示されていない限り、それ以前の Amazon EMR リリースでは、場合によっては AWS 署名バージョン 2 が使用されることがあります。詳細については、「Amazon Simple Storage Service デベロッパーガイド」の「リクエストの認証 (AWS 署名バージョン 4)」および「リクエストの認証 (AWS 署名バージョン 2)」を参照してください。

ファイルシステム プレフィックス 説明
HDFS hdfs:// (またはプレフィックスなし)

HDFS は分散型のスケーラブルかつポータブルな Hadoop 用ファイルシステムです。HDFS の利点は、クラスターを管理する Hadoop クラスターノードと個別のステップを管理する Hadoop クラスターノードの間でのデータ認識です。詳細については、「Hadoop のドキュメント」を参照してください。

HDFS は、マスターノードおよびコアノードによって使用されます。1 つの利点は高速であることです。欠点は、エフェメラルなストレージであり、クラスターが終了すると回収されてしまうことです。最適な用途は、ジョブフローの中間ステップで得られた結果のキャッシュ場所です。

EMRFS s3://

EMRFS は、通常のファイルを Amazon EMR から Simple Storage Service (Amazon S3) に直接読み書きするために使用される Hadoop ファイルシステムの実装です。EMRFS は Hadoop で使用するために Simple Storage Service (Amazon S3) で永続的なデータを保存できるようにしながら、Simple Storage Service (Amazon S3) のサーバー側の暗号化、書き込み後の読み取りの整合性、リストの整合性といった機能も提供します。

注記

以前は、Amazon EMR は、s3n および s3a ファイルシステムを使用していました。どちらも現在でも動作しますが、最適なパフォーマンス、セキュリティ、および信頼性のためには、s3 URI スキームを使用することをお勧めします。

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

ローカルファイルシステムとは、ローカルに接続されているディスクを指します。Hadoop クラスターを作成すると、インスタンスストアと呼ばれる、あらかじめアタッチされたディスクストレージのブロックが事前設定されている EC2 インスタンスから、各ノードが作成されます。インスタンスストアボリューム上のデータは、EC2 インスタンスの存続中のみ使用できます。インスタンスストアボリュームは、バッファやキャッシュ、作業データのように絶えず変化する一時的データを保存するのに最適です。詳細については、「Amazon EC2 インスタンスストレージ」を参照してください。

ローカルファイルシステムは HDFS によって使用されますが、Python もローカルファイルシステムから実行されるため、追加のアプリケーションファイルをインスタンスストアボリュームに保存することを選択できます。

(レガシーの) Simple Storage Service (Amazon S3) ブロックファイルシステム s3bfs://

Simple Storage Service (Amazon S3) ブロックファイルシステムは、レガシーのファイルストレージシステムです。このシステムは、使用しないことを強くお勧めします。

重要

このファイルシステムは、クラスター障害の原因となる競合状態を引き起こすことがあるため、利用はお勧めしません。ただし、レガシーアプリケーションでは必要になることがあります。

ファイルシステムへのアクセス

どのファイルシステムを使用するかは、データへのアクセスに使用するユニフォームリソースアイデンティファイア(URI)のプレフィックスで指定します。次の手順は、数種類のファイルシステムを参照する方法を示しています。

ローカルの HDFS にアクセスするには
  • URI に hdfs:/// プレフィックスを指定します。Amazon EMR は、URI にプレフィックスを指定しないパスをローカル HDFS に解決します。たとえば、次の URI はどちらも HDFS 内の同じ場所に解決されます。

    hdfs:///path-to-data /path-to-data
リモートの HDFS にアクセスするには
  • 次の例に示すように、URI にマスターノードの IP アドレスを含めます。

    hdfs://master-ip-address/path-to-data master-ip-address/path-to-data
Simple Storage Service (Amazon S3) にアクセスするには
  • s3:// プレフィックスを使用します。

    s3://bucket-name/path-to-file-in-bucket
Simple Storage Service (Amazon S3) ブロックファイルシステムにアクセスするには
  • Simple Storage Service (Amazon S3) ブロックファイルシステムを必要とするレガシーアプリケーションでのみ使用してください。このファイルシステムでデータにアクセス、またはデータを格納するには、URI で s3bfs:// プレフィックスを使用します。

    Simple Storage Service (Amazon S3) ブロックファイルシステムは、Simple Storage Service (Amazon S3) への 5 GB を超えるサイズのアップロードをサポートするために使われていたレガシーファイルシステムです。Amazon EMR が AWS Java SDK を通じて提供するマルチパートアップロード機能により、最大 5 TB のサイズのファイルを Simple Storage Service (Amazon S3) ネイティブファイルシステムにアップロードすることができるようになったことを受け、Simple Storage Service (Amazon S3) ブロックファイルシステムは非推奨になりました。

    警告

    このレガシーファイルシステムは競合状態を引き起こす可能性があり、それによってファイルシステムが破壊されるおそれがあるため、この形式は避け、代わりに EMRFS を使用してください。

    s3bfs://bucket-name/path-to-file-in-bucket