

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

# 在 Amazon S3 中使用冰山工作负载
<a name="best-practices-workloads"></a>

本节讨论了可用于优化 Iceberg 与 Amazon S3 交互的 Iceberg 属性。

## 防止热分区（HTTP 503 错误）
<a name="workloads-503"></a>

在 Amazon S3 上运行的某些数据湖应用程序可以处理数百万或数十亿个对象并处理数 PB 的数据。这可能导致前缀接收大量流量，通常通过 HTTP 503（服务不可用）错误检测到这些流量。为防止出现此问题，请使用以下 Iceberg 属性：
+ 设置`write.distribution-mode`为`range`左`hash`右，Iceberg 会写入大文件，从而减少 Amazon S3 请求。这是首选配置，应能解决大多数情况。
+ 如果由于工作负载中有大量数据而继续出现 503 错误，则可以在 Iceberg `true` 中`write.object-storage.enabled`将其设置为。这指示 Iceberg 对对象名称进行哈希处理，并将负载分配到多个随机的 Amazon S3 前缀中。

有关这些属性的更多信息，请参阅 Iceberg 文档中的[写入属性](https://iceberg.apache.org/docs/latest/configuration/#write-properties)。

## 使用 Iceberg 维护操作来释放未使用的数据
<a name="workloads-unused-data"></a>

要管理 Iceberg 表，你可以使用 Iceberg 核心 API、Iceberg 客户端（例如 Spark）或托管服务，例如亚马逊 Athena。要从 Amazon S3 中删除旧文件或未使用的文件，我们建议您仅使用 Iceberg 原生文件 APIs 来[删除快照](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots)、[移除旧的元数据文件](https://iceberg.apache.org/docs/latest/maintenance/#remove-old-metadata-files)和[删除孤立](https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files)文件。

 APIs 通过 Boto3、Amazon S3 软件开发工具包或 AWS Command Line Interface (AWS CLI) 使用 Amazon S3，或者使用任何其他非 Iceberg 方法覆盖或删除 Iceberg 表的 Amazon S3 文件会导致表损坏和查询失败。

## 跨复制数据 AWS 区域
<a name="workloads-replication"></a>

在 Amazon S3 中存储 Iceberg 表时，您可以使用 Amazon S3 中的内置功能，例如[跨区域复制 (CRR)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) 和[多区域接入点 (MRAP)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPoints.html)，跨多个区域复制数据。 AWS 区域 MRAP 为应用程序提供了一个全局端点，用于访问位于多个存储桶中的 S3 存储桶。 AWS 区域 Iceberg 不支持相对路径，但您可以使用 MRAP 通过将存储桶映射到接入点来执行 Amazon S3 操作。MRAP 还与 Amazon S3 跨区域复制流程无缝集成，后者会导致长达 15 分钟的延迟。您必须同时复制数据和元数据文件。

**重要**  
目前，Iceberg 与 MRAP 的集成仅适用于 Apache Spark。如果您需要故障转移到辅助服务器 AWS 区域，则必须计划将用户查询重定向到故障转移区域中的 Spark SQL 环境（例如 Amazon EMR）。

CRR 和 MRAP 功能可帮助您为 Iceberg 表构建跨区域复制解决方案，如下图所示。

![Iceberg 表的跨区域复制](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/apache-iceberg-on-aws/images/cross-region-replication.png)


要设置此跨区域复制架构，请执行以下操作：

1. 使用 MRAP 位置创建表。这样可以确保 Iceberg 元数据文件指向 MRAP 位置而不是物理存储桶位置。

1. 使用 Amazon S3 MRAP 复制 Iceberg 文件。 ****MRAP 支持数据复制，服务级别协议 (SLA) 为 15 分钟。Iceberg 可防止读取操作在复制过程中引入不一致。

1. 使表在辅助区域 AWS Glue Data Catalog 中可用。可从两个选项中选择：
   + 使用 AWS Glue Data Catalog 复制设置用于复制 Iceberg 表元数据的管道。此实用程序在 GitHub [Glue Catalog 和 Lake Formation 权限复制](https://github.com/aws-samples/lake-formation-pemissions-sync)存储库中可用。这种事件驱动的机制根据事件日志复制目标区域中的表。
   + 当您需要进行故障转移时，请在辅助区域中注册表。对于此选项，您可以使用之前的实用程序或 Iceberg regi [ster\_table 过程](https://iceberg.apache.org/docs/latest/spark-procedures/#register_table)并将其指向最新的文件。`metadata.json`