

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

# 在 Amazon S3 中使用 Iceberg 工作負載
<a name="best-practices-workloads"></a>

本節討論 Iceberg 屬性，您可以用來最佳化 Iceberg 與 Amazon S3 的互動。

## 防止熱分割 (HTTP 503 錯誤）
<a name="workloads-503"></a>

在 Amazon S3 上執行的某些資料湖應用程式會處理數百萬或數十億個物件，並處理 PB 的資料。這可能會導致接收大量流量的字首，這通常透過 HTTP 503 （服務無法使用） 錯誤偵測到。若要避免此問題，請使用下列 Iceberg 屬性：
+ 將 `write.distribution-mode`設定為 `hash`或 ，`range`讓 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) 或 Amazon 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)。

透過 Boto3、Amazon S3 SDK 或 AWS Command Line Interface (AWS CLI) 使用 Amazon S3 APIs，或使用任何其他非 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 分鐘的延遲。您必須複寫資料和中繼資料檔案。

**重要**  
目前，與 MRAP 的 Iceberg 整合僅適用於 Apache Spark。如果您需要容錯移轉至次要 AWS 區域，您必須計劃將使用者查詢重新導向至容錯移轉區域中的 Spark SQL 環境 （例如 Amazon EMR)。

CRR 和 MRAP 功能可協助您為 Iceberg 資料表建置跨區域複寫解決方案，如下圖所示。

![\[Iceberg 資料表的跨區域複寫\]](http://docs.aws.amazon.com/zh_tw/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 Permissions 複寫](https://github.com/aws-samples/lake-formation-pemissions-sync)儲存庫中使用。此事件驅動機制會根據事件日誌複寫目標區域中的資料表。
   + 當您需要容錯移轉時，在次要區域中註冊資料表。對於此選項，您可以使用先前的公用程式或 Iceberg [register\$1table 程序](https://iceberg.apache.org/docs/latest/spark-procedures/#register_table)，並將其指向最新的`metadata.json`檔案。