

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

# Amazon EMR でのストレージおよびファイルシステムの使用
<a name="emr-plan-file-systems"></a>

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 へのリクエストを認証します。以前の Amazon EMR リリースでは、リリースノートで AWS 署名バージョン 4 のみが使用されていることが明記されていない限り、場合によっては署名バージョン 2 が使用されます。詳細については、*Amazon Simple Storage Service デベロッパーガイド*の[「リクエストの認証 (AWS 署名バージョン 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)[」および「リクエストの認証 (AWS 署名バージョン 2)](https://docs.aws.amazon.com/AmazonS3/latest/API/auth-request-sig-v2.html)」を参照してください。


| ファイルシステム | Prefix | 説明 | 
| --- | --- | --- | 
| HDFS | hdfs:// (またはプレフィックスなし) | HDFS は分散型のスケーラブルかつポータブルな Hadoop 用ファイルシステムです。HDFS の利点は、クラスターを管理する Hadoop クラスターノードと個別のステップを管理する Hadoop クラスターノードの間でのデータ認識です。詳細については、「[Hadoop のドキュメント](http://hadoop.apache.org/docs/stable)」を参照してください。<br />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 インスタンスストレージ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)」を参照してください。<br />ローカルファイルシステムは HDFS によって使用されますが、Python もローカルファイルシステムから実行されるため、追加のアプリケーションファイルをインスタンスストアボリュームに保存することを選択できます。 | 
| (レガシーの) Simple Storage Service (Amazon S3) ブロックファイルシステム | s3bfs:// | Simple Storage Service (Amazon S3) ブロックファイルシステムは、レガシーのファイルストレージシステムです。このシステムは、使用しないことを強くお勧めします。 このファイルシステムは、クラスター障害の原因となる競合状態を引き起こすことがあるため、利用はお勧めしません。ただし、レガシーアプリケーションでは必要になることがあります。  | 

## ファイルシステムへのアクセス
<a name="emr-dev-access-file-systems"></a>

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

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

  ```
  1. hdfs:///{{path-to-data}}
  2. 							
  3. /{{path-to-data}}
  ```

**リモートの HDFS にアクセスするには**
+ 次の例に示すように、URI にマスターノードの IP アドレスを含めます。

  ```
  1. hdfs://{{master-ip-address}}/{{path-to-data}}
  2. 						
  3. {{master-ip-address}}/{{path-to-data}}
  ```

**Simple Storage Service (Amazon S3) にアクセスするには**
+ `s3://` プレフィックスを使用します。

  ```
  1. 						
  2. 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 が Java SDK AWS を通じて提供するマルチパートアップロード機能を使用すると、大きなファイルを Amazon S3 ネイティブファイルシステムにアップロードでき、Amazon S3 ブロックファイルシステムは廃止されます。EMR のマルチパートアップロードの詳細については、「[Configure multipart upload for Amazon S3](emr-plan-upload-s3.html#Config_Multipart)」を参照してください。S3 オブジェクトサイズとパートサイズの制限の詳細については、**「Amazon Simple Storage Service** *ユーザーガイド*」の「[Amazon S3 マルチパートアップロードの制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html)」を参照してください。
**警告**  
このレガシーファイルシステムは競合状態を引き起こす可能性があり、それによってファイルシステムが破壊されるおそれがあるため、この形式は避け、代わりに EMRFS を使用してください。

  ```
  1. s3bfs://{{bucket-name}}/{{path-to-file-in-bucket}}
  ```