

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon EMR 處理儲存和檔案系統
<a name="emr-plan-file-systems"></a>

Amazon EMR 和 Hadoop 提供各式各樣的檔案系統，讓您在處理叢集步驟時使用。您可藉由用來存取資料的 URI 字首指定要使用的檔案系統。例如， 使用 S3A `s3://amzn-s3-demo-bucket1/path`參考 Amazon S3 儲存貯體 （自 EMR-7.10.0 發行以來）。 Amazon S3 S3A 下表列出可用的檔案系統，並提供各檔案系統的最佳使用時機建議。

Amazon EMR 和 Hadoop 在處理叢集時，通常會使用下列檔案系統當中的兩種或多種。HDFS 和 S3A 是與 Amazon EMR 搭配使用的兩個主要檔案系統。

**重要**  
從 Amazon EMR 5.22.0 版開始，Amazon EMR 僅使用 AWS Signature 第 4 版來驗證對 Amazon S3 的請求。舊版 Amazon EMR 在某些情況下使用 AWS Signature 第 2 版，除非版本備註指出 Signature 第 4 版僅供使用。如需詳細資訊，請參閱《*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)。


| 檔案系統 | 字首 | Description | 
| --- | --- | --- | 
| HDFS | hdfs:// (或不含字首) |  HDFS 是一種分散式且具可擴展性的可攜式檔案系統，適用於 Hadoop。HDFS 的優勢在於能夠感知管理叢集的 Hadoop 叢集節點與管理個別步驟的 Hadoop 叢集節點之間的資料。如需詳細資訊，請參閱 [Hadoop 文件](http://hadoop.apache.org/docs/stable)。 HDFS 是由主節點和核心節點所使用。其中一個優點是速度快；缺點在於它是暫時性儲存，會在叢集結束時回收。最適合用於快取中繼任務流程步驟所產生的結果。  | 
| S3A | s3://, s3a://, s3n:// |  Hadoop S3A 檔案系統是一種開放原始碼 S3 連接器，可讓 Apache Hadoop 及其生態系統直接與 Amazon S3 儲存體互動。它允許使用者使用與 Hadoop 相容的檔案操作讀取和寫入資料至 S3 儲存貯體，在 Hadoop 應用程式和雲端儲存之間提供無縫整合。 在 EMR-7.10.0 之前，Amazon EMR 使用 EMRFS 進行 *s3：//* 和 *s3n：//* 配置。   | 
| 本機檔案系統 |  |  本機檔案系統是指與本機連接的磁碟。當 Hadoop 叢集建立時，每個節點都會從稱為*執行個體存放區*的預先連接磁碟儲存體中，預先設定區塊隨附的 EC2 執行個體建立。執行個體存放區磁碟區上的資料只會在 EC2 執行個體的週期內保存。執行個體存放區磁碟區非常適合存放不斷變動的暫存資料，例如緩衝區、快取、臨時資料及其他暫存的內容。如需詳細資訊，請參閱 [Amazon EC2 執行個體儲存](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。 HDFS 使用本機檔案系統，但 Python 也從本機檔案系統執行，您可以選擇在執行個體儲存體上儲存其他應用程式檔案。  | 
| (舊式) Amazon S3 區塊檔案系統 | s3bfs:// |  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
  ```

**存取 Amazon S3**
+ 使用 `s3://` 字首。

  ```
  1. 						
  2. s3://bucket-name/path-to-file-in-bucket
  ```

**存取 Amazon S3 區塊檔案系統**
+ 僅適用於需要 Amazon S3 區塊檔案系統的舊版應用程式。若要使用此檔案系統存取或存放資料，請在 URI 中使用 `s3bfs://` 字首。

  Amazon S3 區塊檔案系統是一種舊版檔案系統，用於支援上傳到大於 5 GB 的 Amazon S3。透過 Amazon EMR 透過 AWS Java 開發套件提供的分段上傳功能，您可以將大型檔案上傳至 Amazon S3 原生檔案系統，而 Amazon S3 區塊檔案系統已棄用。如需 EMR 分段上傳的詳細資訊，請參閱[設定 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
  ```