

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

# Apache Iceberg ワークロードのモニタリング
<a name="monitoring"></a>

Iceberg ワークロードをモニタリングするには、[メタデータテーブル](https://iceberg.apache.org/docs/latest/spark-queries/#inspecting-tables)の分析と[メトリクスレポーター](https://iceberg.apache.org/javadoc/latest/index.html?org/apache/iceberg/metrics/MetricsReporter.html)の使用の 2 つのオプションがあります。メトリクスレポーターは Iceberg バージョン 1.2 で導入され、REST カタログと JDBC カタログでのみ使用できます。

を使用している場合は AWS Glue Data Catalog、Iceberg が公開するメタデータテーブルの上にモニタリングを設定することで、Iceberg テーブルの状態に関するインサイトを得ることができます。

モニタリングは、パフォーマンス管理とトラブルシューティングに不可欠です。例えば、Iceberg テーブルのパーティションが小さなファイルの特定の割合に達すると、ワークロードは圧縮ジョブを開始してファイルをより大きなファイルに統合できます。これにより、クエリが許容レベルを超えて遅くなります。

## テーブルレベルのモニタリング
<a name="table-level-monitoring"></a>

次の画面は、Amazon Quick Sight で作成されたテーブルモニタリングダッシュボードを示しています。このダッシュボードは、Spark SQL を使用して Iceberg メタデータテーブルをクエリし、アクティブなファイル数や合計ストレージ数などの詳細なメトリクスをキャプチャします。この情報は、運用上の目的で AWS Glue テーブルに保存されます。最後に、次の図に示すように、Amazon Athena を使用して Quick Sight ダッシュボードが作成されます。この情報は、システム内の特定の問題を特定して対処するのに役立ちます。

![\[Iceberg テーブルをモニタリングするための Quick Sight ダッシュボード\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-table.png)


Quick Sight ダッシュボードの例は、Iceberg テーブルの次の主要業績評価指標 (KPIs) を収集します。


| **KPI** | **説明** | **クエリ** | 
| --- |--- |--- |
| **ファイルの数** | Iceberg テーブル内のファイルの数 (すべてのスナップショット用) | <pre>select count(*) <br />from <catalog.database.table_name>.all_files</pre> | 
| **アクティブなファイルの数** | Iceberg テーブルの最後のスナップショットにあるアクティブなファイルの数 | <pre>select count(*) <br />from <catalog.database.table_name>.files</pre> | 
| **平均ファイルサイズ** | Iceberg テーブル内のすべてのファイルの平均ファイルサイズ、メガバイト単位 | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **平均アクティブファイルサイズ** | Iceberg テーブル内のアクティブなファイルの平均ファイルサイズ、メガバイト単位 | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 
| **小さいファイルの割合** | 100 MB 未満のアクティブなファイルの割合 | <pre>select cast(sum(case when file_size_in_bytes < 100000000 then 1 else 0 end)*100/count(*) as decimal(10,2)) <br />from <catalog.database.table_name>.files</pre> | 
| **合計ストレージサイズ** | 孤立したファイルと Amazon S3 オブジェクトバージョンを除く、テーブル内のすべてのファイルの合計サイズ (有効になっている場合) | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **アクティブなストレージの合計サイズ** | 特定のテーブルの現在のスナップショット内のすべてのファイルの合計サイズ | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 

ダッシュボードの作成の詳細については、[Quick Sight ](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html)ドキュメントを参照してください。

## データベースレベルのモニタリング
<a name="database-level-monitoring"></a>

次の例は、Quick Sight で作成されたモニタリングダッシュボードを示し、Iceberg テーブルのコレクションに関するデータベースレベルの KPIs の概要を提供します。

![\[Iceberg のデータベースレベルモニタリング用の QuickSight ダッシュボード\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-database.png)


このダッシュボードは、次の KPIs。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/apache-iceberg-on-aws/monitoring.html)

## 予防メンテナンス
<a name="preventive-maintenance"></a>

前のセクションで説明したモニタリング機能を設定することで、事後的な角度ではなく予防的なテーブルメンテナンスにアプローチできます。たとえば、テーブルレベルとデータベースレベルのメトリクスを使用して、次のようなアクションをスケジュールできます。
+ テーブルが N 個の小さなファイルに達したときに小さなファイルをグループ化するには、ビンパッキング圧縮を使用します。
+ テーブルが特定のパーティション内の N 個の削除ファイルに達したときに、ビンパッキング圧縮を使用して削除ファイルをマージします。
+ 合計ストレージがアクティブストレージの X 倍になったら、スナップショットを削除して、圧縮済みの小さなファイルを削除します。