一致视图 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

一致视图

警告

2023 年 6 月 1 日,EMRFS 一致视图将终止对未来 Amazon EMR 发行版的标准支持。EMRFS 一致视图将继续支持现有发行版。

2020 年 12 月 1 日,Amazon S3 发布了强大的先写后读一致性,此后您不再需要对 Amazon EMR 集群使用 EMRFS 一致视图(EMRFS CV)。EMRFS CV 是一项可选功能,允许 Amazon EMR 集群检查 Amazon S3 对象的列表和先写后读一致性。在创建集群并开启了 EMRFS CV 时,Amazon EMR 将创建一个 Amazon DynamoDB 数据库来存储用于跟踪 S3 对象的列表和先写后读一致性的对象元数据。现在,您可以关闭 EMRFS CV 并删除它使用的 DynamoDB 数据库,这样就不会产生额外费用。以下过程说明了如何检查、关闭 CV 功能以及删除该功能使用的 DynamoDB 数据库。

检查您是否在使用 EMRFS CV 功能
  1. 导航到 Configuration(配置)选项卡。如果您的集群具有以下配置,它将使用 EMRFS CV。

    Classification=emrfs-site,Property=fs.s3.consistent,Value=true
  2. 或者,请使用 Amazon CLI 来通过 describe-cluster API 描述您的集群。如果输出包含 fs.s3.consistent: true,则您的集群使用 EMRFS CV。

在您的 Amazon EMR 集群上关闭 EMRFS CV

要关闭 EMRFS CV 功能,请使用以下三个选项之一。在将这些选项应用到生产环境之前,应先在测试环境中测试它们。

  1. 停止现有集群并启动没有 EMRFS CV 选项的新集群。
    1. 在停止集群之前,请务必备份数据并通知用户。

    2. 要停止集群,请按照终止集群中的说明操作。

    3. 如果您使用 Amazon EMR 控制台创建新集群,请导航到 Advanced Options(高级选项)。在 Edit software settings(编辑软件设置)部分中,取消选中该选项以打开 EMRFS CV。如果 EMRFS consistent view(EMRFS 一致视图)复选框可用,请保持其未选中。

    4. 如果您使用 Amazon CLI 通过 create-cluster API 创建新集群,请勿使用 --emrfs 选项,该选项将打开 EMRFS CV。

    5. 如果您使用开发工具包或 Amazon CloudFormation 创建新集群,请不要使用 Configure consistent view(配置一致视图)中列出的任何配置。

  2. 克隆集群并删除 EMRFS CV
    1. 在 Amazon EMR 控制台中,选择使用 EMRFS CV 的集群。

    2. Cluster Details(集群详细信息)页面顶部,选择 Clone(克隆)。

    3. 选择 Previous(上一步)并导航至 Step 1: Software and Steps(步骤 1:软件和步骤)。

    4. Edit software settings(编辑软件设置)中,删除 EMRFS CV。在 Edit configuration(编辑配置)椎间盘每个。删除 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 中指定,如 Configure consistent view(配置一致视图)中所述。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 队列名称,如 Configure consistent view(配置一致视图)中所述。默认队列名称格式为 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 的支持也将结束。