

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

# 一致性檢視
<a name="emr-plan-consistent-view"></a>

**警告**  
2023 年 6 月 1 日，EMRFS 一致性檢視將終止對未來 Amazon EMR 版本的標準支援。EMRFS 一致性檢視將繼續適用於現有版本。

由於 Amazon S3 於 2020 年 12 月 1 日發佈了強大的先寫後讀一致性，因此您不再需要將 EMRFS 一致性檢視 (EMRFS CV) 與 Amazon EMR 叢集搭配使用。EMRFS CV 是一項選用功能，可讓 Amazon EMR 叢集檢查 Amazon S3 物件的清單和先寫後讀一致性。當您建立叢集並開啟 EMRFS CV 時，Amazon EMR 會建立 Amazon DynamoDB 資料庫來儲存物件中繼資料，該資料庫用於追蹤 S3 物件的清單和先寫後讀一致性。現在，您可以關閉 EMRFS CV 並刪除它使用的 DynamoDB 資料庫，這樣就不會產生額外的費用。下列程序說明如何檢查 CV 功能、將其關閉以及刪除此功能使用的 DynamoDB 資料庫。<a name="enable-emr-fs-console"></a>

**檢查您是否正在使用 EMRFS CV 功能**

1. 導覽至**組態**標籤。如果您的叢集具有下列組態，則會使用 EMRFS CV。

   ```
   Classification=emrfs-site,Property=fs.s3.consistent,Value=true
   ```

1. 或者，使用 AWS CLI 以 [`describe-cluster` API](https://docs.aws.amazon.com/cli/latest/reference/emr/describe-cluster.html) 描述您的叢集。如果輸出包含 `fs.s3.consistent: true`，則您的叢集會使用 EMRFS CV。

**在您的 Amazon EMR 叢集上關閉 EMRFS CV**

若要關閉 EMRFS CV 功能，請使用下列三個選項之一。您應在測試環境中測試這些選項，然後再將這些選項套用於生產環境。

1. 

**停止現有的叢集，並在沒有 EMRFS CV 選項的情況下啟動新叢集。**

   1. 停止叢集之前，確保您已備份資料並通知使用者。

   1. 若要停止叢集，請遵循[終止叢集](https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminateJobFlow.html)中的指示進行操作。

   1. 如果您使用 Amazon EMR 主控台建立新叢集，請導覽至**進階選項**。在**編輯軟體設定**區段中，取消選取用於開啟 EMRFS CV 的選項。如果 **EMRFS 一致性檢視**的核取方塊可用，請保持不勾選此核取方塊。

   1. 如果您使用 AWS CLI 建立具有 [`create-cluster` API](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html) 的新叢集，請勿使用 `--emrfs`選項，這會開啟 EMRFS CV。

   1. 如果您使用 SDK CloudFormation 或 建立新的叢集，請勿使用[設定一致檢視](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emrfs-configure-consistent-view.html)中列出的任何組態。

1. 

**複製叢集並移除 EMRFS CV**

   1. 在 Amazon EMR 主控台中，選擇使用 EMRFS CV 的叢集。

   1. 在**叢集詳細資訊**頁面頂端，選擇**複製**。

   1. 選擇**上一步**，然後導覽至**步驟 1：軟體和步驟**。

   1. 在**編輯軟體設定**中，移除 EMRFS CV。在**編輯組態**中，刪除 `emrfs-site` 分類中的下列組態。如果要從 S3 儲存貯體載入 JSON，您必須修改 S3 物件。

      ```
      [
      	{"classification":
      		"emrfs-site",
      		"properties": {
      			"fs.s3.consistent.retryPeriodSeconds":"10",
      			"fs.s3.consistent":"true",
      			"fs.s3.consistent.retryCount":"5",
      			"fs.s3.consistent.metadata.tableName":"EmrFSMetadata"
      		}
      	}
      ]
      ```

1. 

**從使用執行個體群組的叢集中移除 EMRFS CV**

   1. 使用下列命令檢查單一 EMR 叢集是否使用與 EMRFS CV 關聯的 DynamoDB 資料表，或多個叢集是否共用此資料表。資料表名稱在 `fs.s3.consistent.metadata.tableName` 中指定，如[設定一致性檢視](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emrfs-configure-consistent-view.html)中所述。EMRFS CV 使用的預設資料表名稱為 `EmrFSMetadata`。

      ```
      aws emr describe-cluster --cluster-id j-XXXXX | grep fs.s3.consistent.metadata.tableName
      ```

   1. 如果您的叢集未與其他叢集共用 DynamoDB 資料庫，請使用下列命令重新設定叢集並停用 EMRFS CV。如需詳細資訊，請參閱[重新設定執行中叢集中的執行個體群組](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html)。

      ```
      aws emr modify-instance-groups --cli-input-json file://disable-emrfs-1.json
      ```

      此命令會開啟您要修改的檔案。使用下列組態修改檔案。

      ```
      {
      	"ClusterId": "j-xxxx",
      	"InstanceGroups": [
      		{
      			"InstanceGroupId": "ig-xxxx",
      			"Configurations": [
      				{
      					"Classification": "emrfs-site",
      					"Properties": {
      						"fs.s3.consistent": "false"
      					},
      					"Configurations": []
      				}
      			]
      		}
      	]
      }
      ```

   1. 如果您的叢集與其他叢集共用 DynamoDB 資料表，請在沒有叢集修改共用 S3 位置中的任何物件時關閉所有叢集上的 EMRFS CV。

**刪除與 EMRFS CV 關聯的 Amazon DynamoDB 資源**

從 Amazon EMR 叢集中移除 EMRFS CV 之後，刪除與 EMRFS CV 關聯的 DynamoDB 資源。在執行此操作之前，您將繼續產生與 EMRFS CV 關聯的 DynamoDB 費用。

1. 檢查 DynamoDB 資料表的 CloudWatch 指標，並確認任何叢集都未使用此資料表。

1. 刪除 DynamoDB 資料表。

   ```
   aws dynamodb delete-table --table-name {{<your-table-name>}}
   ```

**刪除與 EMRFS CV 關聯的 Amazon SQS 資源**

1. 如果已將叢集設定為將不一致通知推送至 Amazon SQS，您可以刪除所有 SQS 佇列。

1. 尋找 `fs.s3.consistent.notification.SQS.queueName` 中指定的 Amazon SQS 佇列名稱，如[設定一致性檢視](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emrfs-configure-consistent-view.html)中所述。預設佇列名稱格式為 `EMRFS-Inconsistency-{{<j-cluster ID>}}`。

   ```
   aws sqs list-queues | grep ‘EMRFS-Inconsistency’
   aws sqs delete-queue –queue-url {{<your-queue-url>}}
   ```

**停止使用 EMRFS CLI**
+ [EMRFS CLI](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emrfs-cli-reference.html) 會管理 EMRFS CV 產生的中繼資料。隨著對 EMRFS CV 的標準支援在 Amazon EMR 的未來版本中終止，對 EMRFS CLI 的支援也將終止。

**Topics**
+ [啟用一致性檢視](enable-consistent-view.md)
+ [了解 EMRFS 一致性檢視如何在 Amazon S3 中追蹤物件](emrfs-files-tracked.md)
+ [重試邏輯](emrfs-retry-logic.md)
+ [EMRFS 一致檢視中繼資料](emrfs-metadata.md)
+ [設定 CloudWatch 和 Amazon SQS 的一致性通知](emrfs-configure-sqs-cw.md)
+ [設定一致性檢視](emrfs-configure-consistent-view.md)
+ [EMRFS CLI 命令參考](emrfs-cli-reference.md)