Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今日からはじめる Apache Iceberg テーブルメンテナンス

Avatar for Noritaka Sekiyama Noritaka Sekiyama
June 02, 2025
99

今日からはじめる Apache Iceberg テーブルメンテナンス

Storage JAWS & BigData JAWS 共同開催 ~ S3×Icebergが切り拓く、OTF時代の分析基盤~ でのセッション資料です。
https://storage-jaws.connpass.com/event/353752/

Avatar for Noritaka Sekiyama

Noritaka Sekiyama

June 02, 2025
Tweet

Transcript

  1. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ~ S 3 × I C E B E R G が 切 り 拓 く 、 O T F 時 代 の 分 析 基 盤 ~ 今⽇からはじめる Apache Iceberg テーブルメンテナンス Noritaka Sekiyama S T O R A G E J A W S & B I G D A T A J A W S 共 同 開 催 Principal Big Data Architect, AWS Analytics Amazon Web Services 1
  2. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 関⼭ 宜孝 Principal Big Data Architect, AWS Analytics • 5年間 AWS サポートにて技術⽀援を担当 • 2019年に AWS プロダクト開発チームにジョイン ⾃⼰紹介 @moomindani moomindani
  3. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. このセッションで⾔いたいこと (3⾏まとめ) • Iceberg を最⼤限に活⽤するにはテーブルメンテナンスが⼤切 • AWS にはテーブルメンテナンスを簡単にする仕組みがある • 帰ったら⼿元の Iceberg テーブルのメンテナンスを ON にしよう 3
  4. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. テーブルメンテナンスって何︖ テーブルメンテナンスしないと何が起こるの︖ テーブルメンテナンスにはどんなものがあるの︖ 具体的にはどうやるの︖ アジェンダ 4
  5. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. テーブルメンテナンスって何︖ 5 Iceberg ではテーブルの更新の度に メタデータ層とデータ層に 変更差分が蓄積される manifest list manifest File manifest File manifest File Data Files Data Files Delete Files S2 メタデータ層 データ層 manifest list metadata file Iceberg カタログ Db1.table1 S1 metadata file S1 テーブルの性能と コスト効率を最適化するために 「テーブルメンテナンス」が必要
  6. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. テーブルメンテナンスしないと何が起こるの︖ • クエリパフォーマンスの低下 • 削除すべきデータの残存 • ストレージのコスト効率の低下 6
  7. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. テーブルメンテナンスにはどんなものがあるの︖ • データファイルのコンパクション • delete ファイルのコンパクション • 不要なスナップショットの削除 • 孤⽴したファイルの削除 7 AWS ではいずれも ⾃動化可能
  8. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. データファイルのコンパクション • Iceberg テーブルではトランザクション毎にデータファイルが作成される • クエリが多数のファイルを参照するユースケースでは性能に影響が出る場合がある 8 Iceberg テーブル フラグメント化したファイル Iceberg テーブル 適切なサイズのファイル コンパクション 細かいファイルをまとめるコンパクション運⽤が必要
  9. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. delete ファイルのコンパクション • Merge on Read で⾏を更新/削除すると delete ファイルが作成される • 読み取りクエリは参照時にデータファイルと delete ファイルの情報を マージする必要があり、性能に影響が出る場合がある 9 Iceberg テーブル Iceberg テーブル コンパクション データファイル delete ファイル データファイル内の レコードの削除情報を delete ファイルに保持 データファイル 削除情報を統合した データファイルを作成 delete ファイルをデータファイルに纏めるコンパクション運⽤が必要
  10. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 不要なスナップショットの削除 10 manifest list manifest File manifest File manifest File Data Files Data Files Data Files S2 メタデータ層 データ層 manifest list metadata file Iceberg カタログ Db1.table1 S1 metadata file S1 • Iceberg テーブルではトランザクション の度にスナップショットを保存する • スナップショットの過去履歴を バージョン管理することで、 ACID や タイムトラベル、ロールバック などが可能になる • ⼀⽅で、不要なスナップショットを無制 限に蓄積してしまうと、 ストレージコストが課題になる 不要になったスナップショットを 削除する運⽤が必要
  11. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 孤⽴したファイルの削除 11 manifest list manifest File manifest File manifest File Data Files Data Files Data Files S2 メタデータ層 データ層 manifest list metadata file Iceberg カタログ Db1.table1 • Iceberg テーブルでは、トランザクショ ンの過程でどのスナップショットからも 使⽤されないファイルが作成される場合 がある • 例︓同時書き込みに失敗してコミット されなかったスナップショット • こうしたファイルを「孤⽴ファイル (orphan file)」と呼ぶ 孤⽴したファイルを 削除する運⽤が必要
  12. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 具体的にはどうやるの︖ 12 ⽅法 実⾏環境 実⾏トリガー 説明 Apache Spark の rewrite_data_files プロシージャ 任意の Spark 実⾏環境を利⽤ Spark の実⾏環境と 連携して実⾏ • Iceberg プロジェクトが提供する コンパクションツール • Spark 環境を⽤意する必要がある Amazon Athena の OPTIMIZE コマンド フルマネージド Athena の API • Athena のコンパクション機能 • テーブルのプロパティでターゲット ファイルサイズ等を制御可能 Glue Data Catalog の テーブル最適化 フルマネージド ファイル数とサイズを 元に⾃動実⾏ • ターゲットファイルサイズを維持で きるように⾃動でコンパクション オススメ
  13. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. rewrite_data_files プロシージャ 13 spark.sql(""" CALL catalog_name.system.rewrite_data_files( table => 'db.table_name’ ) """) PySpark
  14. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon Athena - OPTIMIZE コマンド 14
  15. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Glue Data Catalog テーブル最適化 15
  16. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Glue Data Catalog テーブル最適化 コンパクション • ⽬標ファイルサイズ* (デフォルト︓512MB) 不要なスナップショットの削除 • スナップショットの保持期間 (デフォルト︓5⽇間) • 保持するスナップショットの数 (デフォルト︓1) • ファイルを実際に消すかどうか (デフォルト︓ 削除) 16 • Iceberg テーブルに対して、コンソールや API から有効化が必要 孤⽴したファイルの削除 • 孤⽴したファイルの保持期間 (デフォルト: 3⽇間) • 管理対象ディレクトリパス その他 • 実⾏環境の VPC/subnet * テーブルプロパティ write.target-file-size-bytes により設定可能
  17. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon S3 テーブルバケットによる最適化 17
  18. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon S3 テーブルバケットによる最適化 コンパクション • ⽬標とするファイルサイズ (デフォルト︓512MB) 不要なスナップショットの削除 • スナップショットの最⼤保持期間 (デフォルト︓5⽇間) • 保持するスナップショットの最⼩数 (デフォルト︓1) 18 • コンパクション・不要なスナップショットの削除は最初から有効 • PutTableMaintenanceConfiguration API によりカスタマイズ可能
  19. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 料⾦ AWS Glue Data Catalog テーブル最適化 • コンピュートベースの料⾦体系 § 0.44 USD/DPU-Hour Amazon S3 テーブルバケットによる テーブル最適化 • データスキャンベースの料⾦体系 § $0.004 / 1,000 オブジェクト § $0.05 per GB processed 19 https://aws.amazon.com/s3/pricing/ https://aws.amazon.com/glue/pricing/
  20. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ちょっとだけ AWS Glue Data Catalog テーブル最適化の仕組みを解説 20 Dive Deep
  21. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Glue によるテーブル最適化の仕組み • スケジュールベース • 不要なスナップショットの削除 • 孤⽴したファイルの削除 • エントロピーベース § ファイルのコンパクション – エントロピー計算︓各パーティションの⼩さいファイルの数 – コンパクション対象︓エントロピー値の⾼いパーティション • ファイル数: 100 ファイル以上 • ファイルサイズ︓⽬標サイズの 75% を下回る 21 Dive Deep
  22. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. OSS Iceberg に加えた変更 • ⾃動メンテナンスの契機 • ⼩さいファイルの取り扱い § ファイルオープンのコストをワークロードから動的に計算 • 無限ループの防⽌ § エントロピーベースの⾃動メンテナンスによる • ファイルのリスティングの⾼速化 § FileSystem ベースではなく直接 AWS SDK から S3 LIST 22 Dive Deep
  23. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 今後の改善 • コストパフォーマンスの改善 § さまざまな条件でのベンチマーキング (テーブルサイズ・ファイルサイズ・ ファイル数・スキーマ・データサイズ・データ追加速度など) とチューニング • 安定性・正確性の維持・向上 23 Dive Deep
  24. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. このセッションで⾔いたかったこと (3⾏まとめ) • Iceberg を最⼤限に活⽤するにはテーブルメンテナンスが⼤切 • AWS にはテーブルメンテナンスを簡単にする仕組みがある • 帰ったら⼿元の Iceberg テーブルのメンテナンスを ON にしよう 25