

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon S3 での Iceberg ワークロードの使用
<a name="best-practices-workloads"></a>

このセクションでは、Iceberg の Amazon S3 とのやり取りを最適化するために使用できる Iceberg プロパティについて説明します。

## ホットパーティショニングの防止 (HTTP 503 エラー)
<a name="workloads-503"></a>

Amazon S3 で実行される一部のデータレイクアプリケーションは、数百万または数十億のオブジェクトを処理し、ペタバイトのデータを処理します。これにより、大量のトラフィックを受信するプレフィックスが発生する可能性があります。これは通常、HTTP 503 (サービス利用不可) エラーによって検出されます。この問題を回避するには、次の Iceberg プロパティを使用します。
+ Iceberg が大きなファイルを書き込む`range`ように `hash`または `write.distribution-mode`に設定すると、Amazon S3 リクエストが少なくなります。これは推奨される設定であり、ほとんどのケースに対応する必要があります。
+ ワークロード内の大量のデータが原因で 503 エラーが続く場合は、Iceberg `true`で `write.object-storage.enabled`を に設定できます。これにより、オブジェクト名をハッシュし、ランダム化された複数の Amazon S3 プレフィックスに負荷を分散するように Iceberg に指示します。

これらのプロパティの詳細については、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>

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) などの Amazon S3 の組み込み機能を使用して、複数の にデータをレプリケートできます 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/ja_jp/prescriptive-guidance/latest/apache-iceberg-on-aws/images/cross-region-replication.png)


このクロスリージョンレプリケーションアーキテクチャを設定するには:

1. MRAP の場所を使用してテーブルを作成します。これにより、Iceberg メタデータファイルは物理バケットの場所ではなく MRAP の場所を指します。

1. Amazon S3 MRAP を使用して Iceberg ファイルをレプリケートします。** **MRAP は、15 分のサービスレベルアグリーメント (SLA) でデータレプリケーションをサポートします。Iceberg は、レプリケーション中に読み取りオペレーションに不整合が生じるのを防ぎます。

1. テーブルをセカンダリリージョンの AWS Glue Data Catalog で使用可能にします。2 つのオプションから選択できます。
   +  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`ファイルを参照できます。