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

S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで/s3-...

Avatar for emi emi
June 01, 2025

S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで/s3-tables-illustrated-basics-quicksight

2025/6/2 Storage JAWS & BigData JAWS 共同開催 ~ S3×Icebergが切り拓く、OTF時代の分析基盤~
S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで
https://storage-jaws.connpass.com/event/353752/

Avatar for emi

emi

June 01, 2025
Tweet

More Decks by emi

Other Decks in Technology

Transcript

  1. 2025/6/2 Storage JAWS & BigData JAWS 共同開催 ~ S3×Icebergが切り拓く、OTF時代の分析基盤~ S3

    Tables を図解でやさしくおさらい ~基本から QuickSight 連携まで
  2. Iceberg を図解でやさしくおさらい 5 ⚫ データレイク上で発生する様々な問題(大容量データを保存している故に…) ⚫ レコードレベルの小さなデータを高頻度で書き込み・更新・削除反映するのが大変 ⚫ 同時書き込み時の整合性担保 ⚫

    過去の状態の復元に手間と時間がかかる ⚫ 大量データのスキーマ変更の負担増 「特定の時間帯の処理だけ書き換えたい」 「特定の処理をやり直したい」 なども、データ量が多いと探すのが大変
  3. Iceberg を図解でやさしくおさらい 6 ⚫ データレイク上で発生する様々な問題(大容量データを保存している故に…) ⚫ レコードレベルの小さなデータを高頻度で書き込み・更新・削除反映するのが大変 ⚫ 同時書き込み時の整合性担保 ⚫

    過去の状態の復元に手間と時間がかかる ⚫ 大量データのスキーマ変更の負担増 データベースであれば ロック機能で同時アクセスを制御したり トランザクションで整合性を保証したりするが…
  4. Iceberg を図解でやさしくおさらい 9 ⚫ Open Table Format (OTF) レイヤー を挟むことで課題解消

    ⚫ OTF:データレイク上のファイルに対して、 テーブル構造とメタデータ管理を提供する テーブルフォーマット ⚫ Apache Iceberg:OTF の一つ
  5. Iceberg を図解でやさしくおさらい 10 ⚫ Iceberg カタログ ⚫ テーブルの入り口のようなもの ⚫ テーブル名

    → 最新メタデータファイルへのポインター ⚫ メタデータファイル(スナップショット) ⚫ テーブルの「ある時点の状態」を記録 ⚫ スキーマ情報 ⚫ パーティション情報 ⚫ どのマニフェストリストを参照するか ⚫ タイムスタンプ ⚫ マニフェストリスト ⚫ マニフェストファイルの目次 ⚫ どのマニフェストファイルが存在するか ⚫ 各マニフェストファイルの統計情報 ⚫ パーティション範囲情報 ⚫ マニフェストファイル ⚫ データファイルの詳細リスト ⚫ 個々のデータファイルのパス ⚫ ファイルサイズ、行数 ⚫ 統計情報(最小値、最大値等) ⚫ ファイルの状態(追加/削除)
  6. ⚫ Iceberg カタログ ⚫ テーブルの入り口のようなもの ⚫ テーブル名 → 最新メタデータファイルへのポインタ ⚫

    メタデータファイル(スナップショット) ⚫ テーブルの「ある時点の状態」を記録 ⚫ スキーマ情報 ⚫ パーティション情報 ⚫ どのマニフェストリストを参照するか ⚫ タイムスタンプ ⚫ マニフェストリスト ⚫ マニフェストファイルの目次 ⚫ どのマニフェストファイルが存在するか ⚫ 各マニフェストファイルの統計情報 ⚫ パーティション範囲情報 ⚫ マニフェストファイル ⚫ データファイルの詳細リスト ⚫ 個々のデータファイルのパス ⚫ ファイルサイズ、行数 ⚫ 統計情報(最小値、最大値等) ⚫ ファイルの状態(追加/削除) Iceberg を図解でやさしくおさらい 11 メタデータ層が挟まることで 大量データの中から 特定のデータの処理をするための 位置特定が早く効率的になる とてもざっくり
  7. Iceberg を図解でやさしくおさらい 12 ⚫ CoW と MoR ⚫ CoW(Copy-on-Write) ⚫

    データの更新や削除が発生すると、影響を受けるデータ ファイル全体が書き直される ⚫ 読み取り性能は優れるが、書き込み操作は時間とコンピ ューティングリソースが必要 ⚫ 日次バッチロードなど、同じテーブルパーティション内 で更新が集中する使用ケースに適している ⚫ MoR(Merge-on-Read) ⚫ データの更新や削除時に、既存のファイルは変更せず新 しいファイルのみ追加 ⚫ 書き込み増幅を回避し、更新操作が高速 ⚫ 読み取り時にデータのマージが必要となるため、読み取 り性能は若干低下する可能性あり ⚫ 頻繁な書き込みや更新が行われるテーブルに適している
  8. ⚫ CoW と MoR ⚫ CoW(Copy-on-Write) ⚫ データの更新や削除が発生すると、影響を受けるデータ ファイル全体が書き直される ⚫

    読み取り性能は優れるが、書き込み操作は時間とコンピ ューティングリソースが必要 ⚫ 日次バッチロードなど、同じテーブルパーティション内 で更新が集中する使用ケースに適している ⚫ MoR(Merge-on-Read) ⚫ データの更新や削除時に、既存のファイルは変更せず新 しいファイルのみ追加 ⚫ 書き込み増幅を回避し、更新操作が高速 ⚫ 読み取り時にデータのマージが必要となるため、読み取 り性能は若干低下する可能性あり ⚫ 頻繁な書き込みや更新が行われるテーブルに適している Iceberg を図解でやさしくおさらい 13 MoR の場合、 データファイルを直接参照して 行を削除するのではなく メタデータに 「このデータは削除したよ」 という情報を追記する (探して削除するより早い)
  9. Iceberg を図解でやさしくおさらい 14 ⚫ タイムトラベルクエリ ⚫ すべての更新操作にはタイムスタンプが記録 されるため、過去の任意の時点のデータスナ ップショットに簡単にアクセスできる 「タイ

    ムトラベルクエリ」 が実行可能 ⚫ Serializable Isolation ⚫ 「複数のトランザクションが同時実行されて も、順番に実行したのと同じ結果になる」と いう最も厳しい分離レベルでのトランザクシ ョンをサポート
  10. Iceberg を図解でやさしくおさらい 15 ⚫ Schema Evolution ⚫ 既存のデータスキーマを変更する機能 ⚫ 列の追加や削除、名前変更などがリアルタイ

    ムで可能であり、データの履歴を損なうこと なく適用可能 ⚫ Iceberg スキーマの更新はメタデータの変更 であるため、更新を実行するためにデータフ ァイルの書き換えは発生しない Evolution - Apache Iceberg
  11. S3 Tables を図解でやさしくおさらい 16 ⚫ Iceberg を図解でやさしくおさらい ⚫ S3 Tables

    を図解でやさしくおさらい ⚫ QuickSight に連携して可視化してみる ⚫ まとめ
  12. S3 Tables を図解でやさしくおさらい 18 ⚫ S3 Tables ⚫ Apache Iceberg

    サポートが組み込まれたオブジェクトストレージ ⚫ 性能を維持するよう、自動でメンテナンスタスクを実行してくれる ⚫ コンパクション、圧縮、スナップショット管理、参照されていないファイルの削除、など ⚫ AWS 分析サービスとシームレスに統合 ⚫ S3 コンソールからテーブルバケットを AWS 分析サービスと自動的に統合 ⚫ テーブルが AWS Glue Data Catalog に追加されるため、統合後は Athena、Redshift、 QuickSight などの分析サービスからテーブル操作可能 S3 Tables Amazon S3 Tables とテーブルバケットの使用 - Amazon Simple Storage Service https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-tables.html
  13. S3 Tables を図解でやさしくおさらい 19 ⚫ S3 Tables ⚫ Apache Iceberg

    サポートが組み込まれたオブジェクトストレージ ⚫ 性能を維持するよう、自動でメンテナンスタスクを実行してくれる ⚫ コンパクション、圧縮、スナップショット管理、参照されていないファイルの削除、など ⚫ AWS 分析サービスとシームレスに統合 ⚫ S3 コンソールからテーブルバケットを AWS 分析サービスと自動的に統合 ⚫ テーブルが AWS Glue Data Catalog に追加されるため、統合後は Athena、Redshift、 QuickSight などの分析サービスからテーブル操作可能 S3 Tables Amazon S3 Tables とテーブルバケットの使用 - Amazon Simple Storage Service https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-tables.html Iceberg テーブルでは書き込みが発生するたびにスナップショットが作成されどんどん肥大化する 多数の小さなデータファイルが生成され、クエリ性能が低下する 大量のマニフェストファイルを参照する必要が出てきて、メタデータ処理が重くなる 古いスナップショットや不要なファイルが残り続け、ストレージコストが増加する ↓ ↓ これらを解消するために定期的なメンテナンスが必要
  14. S3 Tables を図解でやさしくおさらい 21 S3 Tables というサービスの中に 以下 3 つのコンポーネントが存在する

    • テーブルバケット • 名前空間(namespace) • テーブル テーブルバケットの中に名前空間、 名前空間の中にテーブルがある、という階層構造
  15. S3 Tables を図解でやさしくおさらい 22 カタログは Glue Data Catalog として管理されていて Glue

    とは図のように対応 作成したテーブルは Athena からクエリできる
  16. QuickSight に連携して可視化してみる 25 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  17. QuickSight に連携して可視化してみる 26 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  18. QuickSight に連携して可視化してみる 27 AWSアカウントID AWSアカウントID AWSアカウントID ⚫ Lake Formation の

    Resource link を作成 デフォルトの Catalog (AWS アカウント ID) と S3 テーブルバケットとして作成した Catalog があるので注意 デフォルトの Catalog (AWS アカウント ID) を選択
  19. QuickSight に連携して可視化してみる 28 AWSアカウントID AWSアカウントID AWSアカウントID AWSアカウントID AWSアカウントID AWSアカウントID AWSアカウントID

    AWSアカウントID デフォルトの Catalog (AWS アカウント ID) を選択 Shared database で出てこない 自分で namespace 名を入れる
  20. QuickSight に連携して可視化してみる 32 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  21. QuickSight に連携して可視化してみる 35 { "Version": "2012-10-17", "Statement": [ { "Sid":

    "VisualEditor0", "Effect": "Allow", "Action": "glue:GetCatalog", "Resource": "*" } ] } ポリシー名の例:allow-glue-catalog ⚫ 付与する IAM ポリシー (Sid は任意)
  22. QuickSight に連携して可視化してみる 36 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  23. QuickSight に連携して可視化してみる 37 [cloudshell-user@ip-10-132-70-51 ~]$ aws quicksight list-users --aws-account-id 123456789012

    --namespace default --region ap-northeast-1 { "UserList": [ { "Arn": "arn:aws:quicksight:ap-northeast-1:123456789012:user/default/xx.emi/xx.emi", "UserName": "xx.emi/xx.emi", "Email": "[email protected]", "Role": "ADMIN", "IdentityType": "IAM", "Active": true, "PrincipalId": "federated/iam/AROA45YZHQXPSRRI6IZHG:xx.emi" } ], "Status": 200, "RequestId": "df22ccc7-7211-40fb-a1d5-b194db64836f" } [cloudshell-user@ip-10-132-70-51 ~]$ ⚫ AWS CLI list-users コマンドを実行して QuickSight 管理者ユーザーの ARN をコピーし ておく list-users — AWS CLI 2.27.26 Command Reference https://awscli.amazonaws.com/v2/documentation/api/latest/reference/quicksight/list-users.html
  24. QuickSight に連携して可視化してみる 38 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  25. QuickSight に連携して可視化してみる 43 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  26. QuickSight に連携して可視化してみる 48 ⚫ Lake Formation の Resource link を作成

    ⚫ QuickSight からアクセスする権限を設定する ⚫ QuickSight の IAM ロールに IAM ポリシーを追加 ⚫ アクセスするテーブルに対する Lake Formation アクセス許可を付与 ⚫ Database(Resource link)の権限付与 ⚫ Database(Resource link)内のテーブル ⚫ QuickSight に連携して可視化してみる
  27. まとめ 54 ⚫ S3 Tables = Apache Iceberg サポート内蔵のオブジェクトストレージ ⚫

    データレイクの課題を解決 ⚫ 行レベルの更新・削除、同時書き込み整合性、タイムトラベルクエリ、スキーマ変更を サポート ⚫ 自動メンテナンス ⚫ コンパクション、圧縮、スナップショット管理などを自動実行 ⚫ AWS分析サービスとシームレス統合 ⚫ Glue Data Catalog に自動追加され、Athena、QuickSight などから直接アクセス可能 ⚫ QuickSight 連携には権限設定が必要 ⚫ Lake Formation Resource link 作成 + IAM ポリシー追加 + アクセス許可設定
  28. 参考 55 ⚫ Apache Iceberg と Amazon S3 Tables -

    Speaker Deck https://speakerdeck.com/pro ⚫ S3 Tables 向けの Iceberg REST Catalog API が追加されたので、PyIcebergからアクセスしてみた。 | DevelopersIO https://dev.classmethod.jp/articles/add-s3-tables-iceberg-rest-catalog-api/ ⚫ AWS Glue Iceberg REST エンドポイントを使用したデータカタログへの接続方法 - AWS Glue https://docs.aws.amazon.com/ja_jp/glue/latest/dg/connect-glu-iceberg-rest.html ⚫ AWS入門ブログリレー2024〜 Amazon Athena 編〜 | DevelopersIO https://dev.classmethod.jp/articles/introduction-2024-amazon-athena/ ⚫ Apache Iceberg の CoW と MoR 〜 データの読み取りと書き込みのパフォーマンスのバランスを取るための2つの戦略 | DevelopersIO https://dev.classmethod.jp/articles/apache-iceberg-mor-cow-storategy/ ⚫ [調査報告] Amazon Athena Icebergテーブルスキーマの変更を検証してみました! | DevelopersIO https://dev.classmethod.jp/articles/20241021-amazon-athena-iceberg-schema-evolution/ ⚫ Evolution - Apache Iceberg https://iceberg.apache.org/docs/latest/evolution/ ⚫ 統合カタログの Iceberg Open Table Format (プレビュー) のデータ品質 | Microsoft Learn https://learn.microsoft.com/ja-jp/purview/unified- catalog-data-quality-iceberg ⚫ Apache Icebergの解説とAWSでの運用 - Speaker Deck https://speakerdeck.com/shuyasawa/apache-icebergnojie-shuo-toawsdenoyun-yong ⚫ Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する #AWSreInvent | DevelopersIO https://dev.classmethod.jp/articles/amazon-s3-tables-quicksight-reinvent/