一致性檢視 - Amazon EMR

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

一致性檢視

警告

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 資料庫。

檢查您是否正在使用 EMRFS CV 功能
  1. 導覽至組態標籤。如果您的叢集具有下列組態,則會使用 EMRFS CV。

    Classification=emrfs-site,Property=fs.s3.consistent,Value=true
  2. 或者,使用 AWS CLI 來描述具有 describe-cluster API 的叢集。如果輸出包含 fs.s3.consistent: true,則您的叢集會使用 EMRFS CV。

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

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

  1. 停止現有的叢集,並在沒有 EMRFS CV 選項的情況下啟動新叢集。
    1. 停止叢集之前,確保您已備份資料並通知使用者。

    2. 若要停止叢集,請遵循終止叢集中的指示進行操作。

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

    4. 如果您使用 AWS CLI 建立具有 create-cluster API 的新叢集,請勿使用 --emrfs選項,這會開啟 EMRFS CV。

    5. 如果您使用 SDK AWS CloudFormation 或 建立新的叢集,請勿使用設定一致檢視中列出的任何組態。

  2. 複製叢集並移除 EMRFS CV
    1. 在 Amazon EMR 主控台中,選擇使用 EMRFS CV 的叢集。

    2. 叢集詳細資訊頁面頂端,選擇複製

    3. 選擇上一步,然後導覽至步驟 1:軟體和步驟

    4. 編輯軟體設定中,移除 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" } } ]
  3. 從使用執行個體群組的叢集中移除 EMRFS CV
    1. 使用下列命令檢查單一 EMR 叢集是否使用與 EMRFS CV 關聯的 DynamoDB 資料表,或多個叢集是否共用此資料表。資料表名稱在 fs.s3.consistent.metadata.tableName 中指定,如設定一致性檢視中所述。EMRFS CV 使用的預設資料表名稱為 EmrFSMetadata

      aws emr describe-cluster --cluster-id j-XXXXX | grep fs.s3.consistent.metadata.tableName
    2. 如果您的叢集未與其他叢集共用 DynamoDB 資料庫,請使用下列命令重新設定叢集並停用 EMRFS CV。如需詳細資訊,請參閱重新設定執行中叢集中的執行個體群組

      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": [] } ] } ] }
    3. 如果您的叢集與其他叢集共用 DynamoDB 資料表,請在沒有叢集修改共用 S3 位置中的任何物件時關閉所有叢集上的 EMRFS CV。

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

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

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

  2. 刪除 DynamoDB 資料表。

    aws dynamodb delete-table --table-name <your-table-name>
刪除與 EMRFS CV 關聯的 Amazon SQS 資源
  1. 如果已將叢集設定為將不一致通知推送至 Amazon SQS,您可以刪除所有 SQS 佇列。

  2. 尋找 fs.s3.consistent.notification.SQS.queueName 中指定的 Amazon SQS 佇列名稱,如設定一致性檢視中所述。預設佇列名稱格式為 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 會管理 EMRFS CV 產生的中繼資料。隨著對 EMRFS CV 的標準支援在 Amazon EMR 的未來版本中終止,對 EMRFS CLI 的支援也將終止。