Amazon EMR
管理ガイド

ストレージシステムとファイルシステムで作業する

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

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

重要

Amazon EMR リリースバージョン 5.22.0 以降では、Amazon EMR は、AWS 署名バージョン 4 を排他的に使用して、Amazon S3 へのリクエストを認証します。それ以前の Amazon EMR リリースバージョンでは、AWS 署名バージョン 2 を使用する場合があります。ただし、署名バージョン 4 が排他的に使用されていることがリリースノートで示されている場合を除きます。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「リクエストの認証 (AWS 署名バージョン 4)」および「リクエストの認証 (AWS 署名バージョン 2)」を参照してください。

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

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

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

EMRFS s3://

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

注記

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

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

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

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

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

重要

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

注記

s3a プロトコルはサポートされていません。s3 の使用を推奨します (s3a ではなく)。

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

どのファイルシステムを使用するかは、データへのアクセスに使用するユニフォームリソースアイデンティファイア(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

Amazon S3 にアクセスするには

  • s3:// プレフィックスを使用します。

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

Amazon S3 ブロックファイルシステムにアクセスするには

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

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

    警告

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

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

このページの内容: