一致性檢視 - Amazon EMR

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

一致性檢視

警告

在 2023 年 6 月 1 日,EMRFS一致性檢視將達到未來 Amazon EMR版本的標準支援結束。EMRFS 一致性檢視將繼續適用於現有的版本。

隨著 Amazon S3 於 2020 年 12 月 1 日發布強大的 read-after-write一致性,您不再需要將EMRFS一致性檢視 (EMRFS CV) 與 Amazon EMR叢集搭配使用。EMRFS CV 是一項選用功能,可讓 Amazon EMR叢集檢查 Amazon S3 物件的清單和 read-after-write一致性。當您建立叢集並開啟 EMRFS CV 時,Amazon EMR會建立 Amazon DynamoDB 資料庫來存放物件中繼資料,用於追蹤 S3 物件的清單和 read-after-write一致性。您現在可以關閉 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 分類中的下列組態。如果您要JSON從 S3 儲存貯體載入,則必須修改 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. 尋找 中指定的 Amazon SQS佇列名稱fs.s3.consistent.notification.SQS.queueName,如設定一致檢視 中所述。預設佇列名稱格式為 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,對 的支援EMRFSCLI也會達到其結尾。