Amazon EMR でのストレージおよびファイルシステムの使用
Amazon EMR および Hadoop には、クラスターステップの処理に使用できるさまざまなファイルシステムが用意されています。どのファイルシステムを使用するかは、データへのアクセスに使用する URI のプレフィックスで指定します。例えば、s3://amzn-s3-demo-bucket1/path は Amazon S3 S3A バケットを参照します (EMR-7.10.0 リリース以降)。次の表に、使用可能なファイルシステムと、それぞれの使用が推奨される条件を示します。
Amazon EMR および Hadoop は通常、クラスターを処理するときに以下のうち少なくとも 2 つのファイルシステムを使用します。HDFS と S3A は、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 つの利点は高速であることです。欠点は、エフェメラルなストレージであり、クラスターが終了すると回収されてしまうことです。最適な用途は、ジョブフローの中間ステップで得られた結果のキャッシュ場所です。 |
| S3A | s3://, s3a://, s3n:// |
Hadoop S3A ファイルシステムは、Apache Hadoop とそのエコシステムが Amazon S3 ストレージと直接やり取りできるようにするオープンソースの S3 コネクタです。これにより、ユーザーは Hadoop 互換のファイルオペレーションを使用して S3 バケットにデータを読み書きできるので、Hadoop アプリケーションとクラウドストレージをシームレスに統合できます。 注記EMR-7.10.0 以前は、Amazon EMR は s3:// および s3n:// スキームに EMRFS を使用していました。 |
| ローカルファイルシステム |
ローカルファイルシステムとは、ローカルに接続されているディスクを指します。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-datamaster-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 を通じて提供するマルチパートアップロード機能により、大きなサイズのファイルを Simple Storage Service (Amazon S3) ネイティブファイルシステムにアップロードすることができるようになったことを受け、Simple Storage Service (Amazon S3) ブロックファイルシステムは非推奨になりました。EMR のマルチパートアップロードの詳細については、「Configure multipart upload for Amazon S3」を参照してください。S3 オブジェクトサイズとパートサイズの制限の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 マルチパートアップロードの制限」を参照してください。
警告
このレガシーファイルシステムは競合状態を引き起こす可能性があり、それによってファイルシステムが破壊されるおそれがあるため、この形式は避け、代わりに EMRFS を使用してください。
s3bfs://bucket-name/path-to-file-in-bucket