

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 重试逻辑
<a name="emrfs-retry-logic"></a>

EMRFS 将尝试针对其元数据中跟踪的对象验证列表一致性，并重试特定次数。默认值为 5。如果超过重试次数，则发起任务会返回错误，除非 `fs.s3.consistent.throwExceptionOnInconsistency` 设置为 `false` (此时仅将跟踪的对象记录为不一致)。EMRFS 默认使用指数退避重试策略，但您也可以将它设置为固定策略。用户还可能希望在重试特定一段时间之后继续任务的其余操作，而不是引发异常。可通过将 `fs.s3.consistent.throwExceptionOnInconsistency` 设置为 `false`，将 `fs.s3.consistent.retryPolicyType` 设置为 `fixed`，将 `fs.s3.consistent.retryPeriodSeconds` 设置为所需的值，来实现此目的。以下示例创建一个启用了一致性的集群，将记录不一致并设置 10 秒的固定重试间隔：

**Example 将重试期间设置为固定量**  

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-type m5.xlarge --instance-count 1 \
--emrfs Consistent=true,Args=[fs.s3.consistent.throwExceptionOnInconsistency=false, fs.s3.consistent.retryPolicyType=fixed,fs.s3.consistent.retryPeriodSeconds=10] --ec2-attributes KeyName=myKey
```

**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号（^）。

有关更多信息，请参阅[一致视图](emr-plan-consistent-view.md)。

## 为 IMDS 的 EMRFS 配置获取区域调用
<a name="randomized-exponential-backoff-retry"></a>

EMRFS 依靠 IMDS（实例元数据服务）来获取实例区域和亚马逊 S3、DynamoDB 或终端节点。 AWS KMS 但是，IMDS 对可以处理的请求数量有限制，以及超过限制失败的请求。此 IMDS 限制可能会导致 EMRFS 初始化失败，查询或命令失败。您可以使用以下随机的指数回退重试机制和 emrfs-site.xml 中的回退区域配置属性来解决所有重试都失败的情况。

```
<property>
    <name>fs.s3.region.retryCount</name>
    <value>3</value>
    <description>
    Maximum retries that would be attempted to get AWS region.
    </description>
</property>
<property>
    <name>fs.s3.region.retryPeriodSeconds</name>
    <value>3</value>
    <description>
    Base sleep time in second for each get-region retry.
    </description>
</property>
<property>
    <name>fs.s3.region.fallback</name>
    <value>us-east-1</value>
    <description>
    Fallback to this region after maximum retries for getting AWS region have been reached.
    </description>
</property>
```