Slide 1

Slide 1 text

S3 Tablesの使い方を 検証してみた 2024/12/20 株式会社BeeX 半田 大樹(handy) Storage-JAWS #6 AWS re:Invent 2024 re:Cap 大会!

Slide 2

Slide 2 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 2 Storage-JAWS #6 自己紹介 ・名前 半田 大樹(Handa Daiki) ・所属 株式会社BeeX ・業務歴 2022年~:クラウド全般の技術支援 2019年~:データ分析基盤の開発保守 ・好きなAWSサービス Amazon S3、AWS Step Functions ・趣味 猫様のお世話、資格取得 ×15 ×10 ×9 X→@handydd18 2024 Japan AWS ALL Certifications Engineer 2023 Japan AWS Top Engineer 2023 Japan AWS ALL Certifications Engineer 2022 APN ALL AWS Certifications Engineer

Slide 3

Slide 3 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 3 免責事項 • 本日お話しする内容は2024/12/20時点の情報を元に作成しております • Preview機能が含まれるため、一般提供時には変更される可能性があります Storage-JAWS #6

Slide 4

Slide 4 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 4 今日の話 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html

Slide 5

Slide 5 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 5 今日の話 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html この部分

Slide 6

Slide 6 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 6 まずその前に… S3 Tablesとは? (What’s Newより) • Apache Icebergをサポートした初のクラウドオブジェクトストア • 表形式データを最も簡単に大規模に保存する • 自己管理テーブル(通常のS3)と比較して最大3倍のクエリスループットと最大 10倍のトランザクション/秒を実現 • 一般的なAWSサービスやサードパーティのクエリエンジンで簡単にクエリ可能 Storage-JAWS #6 参考:https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-s3-tables-apache-iceberg-tables-analytics-workloads/

Slide 7

Slide 7 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 7 まずその前に… Apache Icebergとは? • Netflixが2017年に開発したOpen Tables Format • 現在はApache Foundationに寄贈され、開発が進められている • データレイク上のデータ処理を簡素化する • 最新バージョンは2024/12/6にリリースされた v1.7.1 • S3 Tablesで利用しているのは2024/8/27にリリースされた v1.6.1 Storage-JAWS #6

Slide 8

Slide 8 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 8 まずその前に… Open Table Formatとは? Storage-JAWS #6 クエリエンジン ストレージ テーブルフォーマット 参考:https://bering.hatenadiary.com/entry/2023/09/24/175953 Amazon S3 Amazon Athena(Glue) ・ ・ ・ アクセス 操作 テーブル仕様に基づいてデータ、 メタデータへアクセス

Slide 9

Slide 9 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 9 まずその前に… Open Table Formatとは? 参考:https://iceberg.apache.org/spec/#overview Storage-JAWS #6 S3上でファイルとして管理 Glue上で管理 Athenaでアクセス Icebergをサポートしている必要がある Icebergをサポートしている必要がある =概念的にはNTFSやext4などが近い? 拡張子はparquet 拡張子はjsonなど

Slide 10

Slide 10 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 10 まずその前に… S3 Tablesで何が嬉しいのか? 参考:https://iceberg.apache.org/spec/#overview Storage-JAWS #6 S3上でファイルとして管理 Glue上で管理 Athenaでアクセス Icebergをサポートしている必要がある Icebergをサポートしている必要がある ファイルが貯まり続けるため定期的な整理が必要 =圧縮やスナップショットの管理作業など Iceberg Cataglogのメタデータ管理のための 仕組みが必要

Slide 11

Slide 11 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 11 まずその前に… S3 Tablesで何が嬉しいのか? 参考:https://iceberg.apache.org/spec/#overview Storage-JAWS #6 S3上でファイルとして管理 Glue上で管理 Athenaでアクセス Icebergをサポートしている必要がある Icebergをサポートしている必要がある ファイルが貯まり続けるため定期的な整理が必要 =圧縮やスナップショットの管理作業など Iceberg Cataglogのメタデータ管理のための 仕組みが必要 自動化するメンテナンスジョブが提供される 定期的なクローリング等の追加のメタデータ管理が不要になる

Slide 12

Slide 12 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 12 それでは本題 Storage-JAWS #6

Slide 13

Slide 13 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 13 本題 技術的な内容は以下の記事に大体書いてますので、今日はいくつかポイントを ピックアップして説明します Storage-JAWS #6 https://qiita.com/handy-dd18/items/1e0b251f9dce767f6bcd https://qiita.com/handy-dd18/items/8af7f5a9427402d94ed3

Slide 14

Slide 14 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 14 S3 Tablesリソースの構築方法 2024/12/20時点でドキュメント上で確認できた限りだと、 3種類の構築方法があります。 CloudFormation/CDKはドキュメントに記載が見つかりませんでした。 Storage-JAWS #6 AWS Management Console AWS CLI ※v2.22.10で確認済み AWS SDK ※Boto3 v1.35.84ドキュメントに記載あり Terraformは既に対応しているようです →https://www.hashicorp.com/blog/terraform-launch-day-support-amazon-s3-tables-eks-hybrid-nodes-and-more

Slide 15

Slide 15 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 15 S3 Tablesの構成 S3 Tablesの構成と分析サービスの関連図は次のようになっています。 ※S3 Tablesと分析サービスの統合機能はPreview提供 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html AWS Cloud Region S3 Tables Table Bucket A Namespace A Table A Lake Formation s3tablescatalog Catalog A Database A Table A awsdatacatalog Resource link A Shared Catalog A Table A 登録 共有設定 Table B Table C Athena Redshift Data Firehose EMR QuickSight 参照 クエリ クエリ

Slide 16

Slide 16 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 16 S3 Tablesの構成 S3 Tablesの構成と分析サービスの関連図は次のようになっています。 ※S3 Tablesと分析サービスの統合機能はPreview提供 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html AWS Cloud Region S3 Tables Table Bucket A Namespace A Table A Lake Formation s3tablescatalog Catalog A Database A Table A awsdatacatalog Resource link A Shared Catalog A Table A 自動マウント 共有設定 Table B Table C Athena Redshift Data Firehose EMR QuickSight 参照 クエリ クエリ テーブルバケットは複数のテーブルの管理単位 名前空間はテーブルの論理的な分割単位 マネージドなIcebergテーブル

Slide 17

Slide 17 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 17 S3 Tablesの構成 S3 Tablesの構成と分析サービスの関連図は次のようになっています。 ※S3 Tablesと分析サービスの統合機能はPreview提供 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html AWS Cloud Region S3 Tables Table Bucket A Namespace A Table A Lake Formation s3tablescatalog Catalog A Database A Table A awsdatacatalog Resource link A Shared Catalog A Table A 登録 共有設定 Table B Table C Athena Redshift Data Firehose EMR QuickSight 参照 クエリ クエリ S3 Tablesの論理的な紐付け先 1対1で紐付け

Slide 18

Slide 18 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 18 S3 Tablesの構成 S3 Tablesの構成と分析サービスの関連図は次のようになっています。 ※S3 Tablesと分析サービスの統合機能はPreview提供 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html AWS Cloud Region S3 Tables Table Bucket A Namespace A Table A Lake Formation s3tablescatalog Catalog A Database A Table A awsdatacatalog Resource link A Shared Catalog A Table A 登録 共有設定 Table B Table C Athena Redshift Data Firehose EMR QuickSight 参照 クエリ クエリ Glue Data Catalogに紐付けのため リソースリンクを作成 Glue 紐付け

Slide 19

Slide 19 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 19 S3 Tablesの構成 S3 Tablesの構成と分析サービスの関連図は次のようになっています。 ※S3 Tablesと分析サービスの統合機能はPreview提供 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html AWS Cloud Region S3 Tables Table Bucket A Namespace A Table A Lake Formation s3tablescatalog Catalog A Database A Table A awsdatacatalog Resource link A Shared Catalog A Table A 登録 共有設定 Table B Table C Athena Redshift Data Firehose EMR QuickSight 参照 クエリ クエリ QuickSightはAthena経由でアクセスする

Slide 20

Slide 20 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 20 S3 Tablesの構成 S3 TablesのAPIを分類すると次のようになります。 Storage-JAWS #6 参考:https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_S3_Tables.html テーブルバケット 関連 ネームスペース 関連 テーブル 関連 メンテナンス 関連 • CreateNamespace • DeleteNamespace • GetNamespace • ListNamespaces • CreateTableBucket • DeleteTableBucket • DeleteTableBucketPolicy • GetTableBucket • GetTableBucketPolicy • GetTableMetadataLocation • ListTableBuckets • PutTableBucketPolicy • UpdateTableMetadataLocation • CreateTable • DeleteTable • DeleteTablePolicy • GetTable • GetTablePolicy • ListTables • PutTablePolicy • RenameTable • GetTableBucketMaintenanceConfig uration • GetTableMaintenanceConfiguration • GetTableMaintenanceJobStatus • PutTableBucketMaintenanceConfig uration • PutTableMaintenanceConfiguration

Slide 21

Slide 21 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 21 S3 Tablesの使い方 公開されているドキュメントや検証記事を見る限りだと、現時点で明示的にテー ブルリソースにデータを投入するにはSpark SQLかData Firehoseを利用するし かなさそうです。 Storage-JAWS #6 Data Firehose EMR Glue CloudShell Local

Slide 22

Slide 22 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 22 S3 Tablesの使い方 • ドキュメントに記載されているSpark Shell起動コマンド(EMR) • 実際に実施したSpark Shell起動コマンド(Local) Storage-JAWS #6 spark-shell ¥ --packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.3 ¥ --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog ¥ --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog ¥ --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 ¥ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions $ spark-shell ¥ --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.1,¥ software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.3,¥ org.apache.hadoop:hadoop-aws:3.3.4,¥ software.amazon.awssdk:s3:2.20.68,¥ software.amazon.awssdk:sts:2.20.68,¥ software.amazon.awssdk:dynamodb:2.20.68,¥ software.amazon.awssdk:glue:2.20.68,¥ software.amazon.awssdk:kms:2.20.68,¥ software.amazon.awssdk:url-connection-client:2.20.68 ¥ --conf spark.sql.catalog.[構築したテーブルバケット名]=org.apache.iceberg.spark.SparkCatalog ¥ --conf spark.sql.catalog.[構築したテーブルバケット名].catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog ¥ --conf spark.sql.catalog.[構築したテーブルバケット名].warehouse=[構築したテーブルバケットARN] ¥ --conf spark.sql.catalog.[構築したテーブルバケット名].region=us-east-1 ¥ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Slide 23

Slide 23 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 23 S3 Tablesの検証構成 Preview提供されているAWSサービスの内、利用されやすそうなサービスに絞って 検証しました。QuickSightはAthenaを利用するため、検証対象から除外してます。 Storage-JAWS #6 AWS Cloud Data Firehose Local S3 Tables Athena Redshift Lake Formation データ投入 アクセス データ投入

Slide 24

Slide 24 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 24 S3 Tablesの使い方 Athenaの場合 Storage-JAWS #6 AWS Cloud Local S3 Tables Athena Lake Formation データ投入 アクセス ①指定のIAMリソースにDatabase(=Namespace)への データベースレベルの権限を付与 ②指定のIAMリソースにTableへのテーブルレベルの 権限を付与 ③クエリを実行

Slide 25

Slide 25 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 25 S3 Tablesの使い方 Athenaの場合 Storage-JAWS #6 SQL: SELECT * FROM "s3tablescatalog/[テーブルバケット名]"."[名前空間]"."[テーブル名]"

Slide 26

Slide 26 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 26 S3 Tablesの使い方 Redshiftの場合 Storage-JAWS #6 AWS Cloud Local S3 Tables Redshift Lake Formation データ投入 アクセス ①S3 Tables名前空間リソースへのリソースリンクを作成 ②指定のIAMリソースにDatabase/Tableへの データベースレベル、テーブルレベルの権限を付与 ③awsdatacatalogへのデータベース権限を付与 ④クエリ実行(IAM認証)

Slide 27

Slide 27 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 27 S3 Tablesの使い方 Redshiftの場合 Storage-JAWS #6 SQL: SELECT * FROM awsdatacatalog .[名前空間].[テーブル名]

Slide 28

Slide 28 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 28 S3 Tablesの使い方 Data Firehoseの場合 Storage-JAWS #6 AWS Cloud Data Firehose Local S3 Tables Redshift Lake Formation データ投入 アクセス データ投入 ①S3 Tables名前空間リソースへのリソースリンクを作成 ②指定のIAMリソースにDatabase/Tableへの データベースレベル、テーブルレベルの権限を付与 ③①のリソースリンクを指定して構築 ⑤クエリ実行(IAM認証) ④データ投入スクリプト実施

Slide 29

Slide 29 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 29 S3 Tablesの使い方 Data Firehoseの場合 Storage-JAWS #6

Slide 30

Slide 30 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 30 S3 Tablesの使い方 検証時のハマりどころ • データ投入のためのSpark環境の構築ドキュメントがなく、EMR向けのspark- shell起動オプションだと不足していた • S3テーブルバケットにハイフン(-)を利用すると、分析サービスからクエリす るときに何故かハイフン周りでエラーが発生した • ドキュメントではLake Formationでテーブルレベルの許可手順のみしか書か れていないが、実施はデータベースレベルも許可しないとクエリに失敗した Storage-JAWS #6

Slide 31

Slide 31 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 31 まとめ Storage-JAWS #6

Slide 32

Slide 32 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 32 S3 Tablesの使い方 まとめ ※2024/12/20時点 • S3 Tablesとは、S3とApache Icebergが統合された、分析に適したS3ス トレージを提供 • S3 Tables内のデータは表形式で管理される • S3 Tablesを構築する方法はマネジメントコンソール、AWSCLI、 AWSSDK、Terraformの4種類のみ • データの投入にはSpark SQLかData Firehoseを利用する • Lake Formationを利用して各種分析サービスから参照が可能(Preview) Storage-JAWS #6

Slide 33

Slide 33 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 33 おまけ Storage-JAWS #6

Slide 34

Slide 34 text

Copyright © 2024 BeeX Inc. All Rights Reserved. 34 おまけ 2024/11/15のアップデートでData DirehoseがRDBからIcebergテーブルへの CDC配信をサポート(Preview) Storage-JAWS #6 参考:https://aws.amazon.com/jp/blogs/news/replicate-changes-from-databases-to-apache-iceberg-tables-using-amazon-data-firehose/

Slide 35

Slide 35 text

No content