Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apache Icebergの解説とAWSでの運用
Search
Shuya Sawa
January 29, 2025
Technology
1
41
Apache Icebergの解説とAWSでの運用
BigData-JAWS 勉強会 #28 (re:Invent 2024 re:Cap)
https://jawsug-bigdata.connpass.com/event/341224/
Shuya Sawa
January 29, 2025
Tweet
Share
More Decks by Shuya Sawa
See All by Shuya Sawa
Q Developerの最新動向
shuyasawa
3
560
S3 Metadataの仕組みと活用方法
shuyasawa
0
9
S3のライフサイクルをAmazon Braketで最新化してみる
shuyasawa
0
11
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2025年夏版 / Social Implementation of Machine Learning July 2025 Version
moepy_stats
1
220
室長の逆襲 :データ活用の陣地を増やすためのヒント
masatoshi0205
0
150
“日本一のM&A企業”を支える、少人数SREの効率化戦略 / SRE NEXT 2025
genda
1
310
スプリントレビューを効果的にするために
miholovesq
7
1.3k
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing
tomzoh
2
350
SRE with AI:実践から学ぶ、運用課題解決と未来への展望
yoshiiryo1
1
620
振り返りTransit Gateway ~VPCをいい感じでつなげるために~
masakiokuda
4
220
公開初日に Gemini CLI を試した話や FFmpeg と組み合わせてみた話など / Gemini CLI 初学者勉強会(#AI道場)
you
PRO
0
1.6k
セキュアなAI活用のためのLiteLLMの可能性
tk3fftk
1
540
Figma Dev Mode MCP Serverを用いたUI開発
zoothezoo
1
280
Shadow DOM & Security - Exploring the boundary between light and shadow
masatokinugawa
0
620
AWS 怖い話 WAF編 @fillz_noh #AWSStartup #AWSStartup_Kansai
fillznoh
0
140
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
710
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Facilitating Awesome Meetings
lara
54
6.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
How to Ace a Technical Interview
jacobian
278
23k
GitHub's CSS Performance
jonrohan
1031
460k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Site-Speed That Sticks
csswizardry
10
710
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
360
Transcript
Apache Icebergの解説とAWSでの運用 2025/1/29 BigData-JAWS 勉強会 #28 re:Invent 2024 re:Cap IBM
Japan / Shuya Sawa
https://www.youtube.com/watch?v=LY7m5LQliAo
3 Keywords of S3 Tables • 分析ワークロードに最適化されたS3ストレージ • Iceberg形式のテーブルをサポート •
自動最適化によりクエリパフォーマンス向上 • AWS分析サービスとの統合
4 Keywords of S3 Tables • 分析ワークロードに最適化されたS3ストレージ • Iceberg形式のテーブルをサポート •
自動最適化によりクエリパフォーマンス向上 • AWS分析サービスとの統合 Keynote後のつかの間の ひと時を過ごす私 2年続いて新バケットはアツい!! でもIcebergっていったい何者なんだろうか… 分析に使うくらいしか知らないなぁ…. 結局S3 Tablesはいったい何をしているんだろうか….? うーん………………….
5 Iceberg の特徴を知る 01 AWSとIceberg の連携方式を知る 02 S3 Tables の特徴を捉える
03 本日お伝えしたいこと
6 Icebergの歴史 Hadoop分散ファイル システム (HDFS) Hive Hive Table Format 2004年
MapReduce 2008年 分析ツール ストレージ テーブル形式 Javaで分析ジョブを実行するMapReduce HadoopのエコシステムとしてMapReduceが組み込まれていた 一元的に管理をするデータウェアハウス的な志向 HiveSQLによってMapReduceの扱いづらさを克服 Javaで分析を描くと冗長的になってしまう課題があった アナリストにとってJavaよりもSQLの方が馴染みがあった ファイルをテーブルのように見せるために Hive Table Formatが誕生 ディレクトリとその中のファイルをテーブルとして認識させた
7 Icebergの歴史 S3 Presto Apache Spark Dremio Minio 分析ツール ストレージ
テーブル形式 Hive Table Format オブジェクトストレージ 2010年~ MobileやIoTの発達で多様なデータフォーマット に対応する必要性が高まる クラウドのオブジェクトストレージが好んで使われるようになった 様々な分散クエリエンジンの登場 Hadoopのようなデータウェアハウスではなく、 より分散的でツール間依存が少ないデータレイク志向 Hive Table Formatは標準として残る ストレージ内のファイルを単一のテーブルとして認識させる
8 Icebergの歴史 S3 Presto Apache Spark Dremio Minio 分析ツール ストレージ
テーブル形式 Hive Table Format オブジェクトストレージ 2010年~ Hive Table Formatは過剰なネットワーク呼び出し負荷 の課題が浮上した ディレクトリ構造でテーブル分割を行っているため、パーティション 変更などに非常に弱かった ACIDトランザクションが欠如している エンジンからのクエリはスキーマオンリード方式のため、 実際にクエリを実行されて、データを読み込むときに テーブル定義と合うか判断される データの不整合がある可能性を秘めている
9 Icebergの歴史 S3 Presto Apache Spark Dremio Minio 分析ツール ストレージ
テーブル形式 Apache Iceberg Table Format オブジェクトストレージ 2010年~ 2017年 Apache Iceberg Table Formatの登場 一貫性、パフォーマンス、使いやすさ、スケーラビリティを 念頭に置いてNetflix社のRyan Blueによって開発された 2018年よりオープンソース化
Iceberg の構成要素 10 メタデータ ファイル マニフェスト リスト マニフェスト ファイル データ
ファイル S0 S1 Icebergカタログ メタデータポインタ • 最新メタデータファイルの管理 • アトミック操作を担保 • スナップショット(バージョン)の管理 • スナップショットに紐づくマニフェストリストの管理 • JSONで保存される • スナップショットと1対1対応 • マニフェストファイルのリストを管理 • AVROで保管される • データファイルを管理する • AVROで保管される • データ • Perquetで保管される メタデータレイヤ データレイヤ オブジェクト ストレージで 保管 要カタログ ツール
Iceberg のアーキテクチャ 11 https://www.dremio.com/resources/guides/apache-iceberg-an-architectural-look-under-the-covers/ メタデータ ファイル S0 Icebergカタログ db1.table1 CREATE
TABLE db1.table1 ( order_id BIGINT, customer_id BIGINT, order_amount DECIMAL(10, 2), order_ts TIMESTAMP ) USING iceberg PARTITIONED BY ( HOUR(order_ts) ); カタログのポインタ db1.table1 → table1/metadata/v1.metadata.json オブジェクトストレージの中の様子 table1/ ├ metadata/ ├ v1.metadata.json ├ data/
Iceberg のアーキテクチャ 12 https://www.dremio.com/resources/guides/apache-iceberg-an-architectural-look-under-the-covers/ メタデータ ファイル S0 Icebergカタログ db1.table1 INSERT
INTO db1.table1 VALUES ( 123, 456, 36.17, ‘2025-01-26 08:10:23' ); カタログのポインタ db1.table1 → table1/metadata/v2.metadata.json オブジェクトストレージの中の様子 table1/ ├ metadata/ ├ v1.metadata.json ├ v2.metadata.json New! ├ snap-178s9-fsdo.avro New! ├ dlwo-soagn-1o.avro New! ├ data/ ├ order_ts_hour=2025-01-26-8 ├ 000-1-awx.parquet New! メタデータ ファイル S0 S1 マニフェスト リスト マニフェスト ファイル データ ファイル
Iceberg のアーキテクチャ 13 https://www.dremio.com/resources/guides/apache-iceberg-an-architectural-look-under-the-covers/ メタデータ ファイル S0 Icebergカタログ db1.table1 MERGE
INTO table1 USING ( SELECT * FROM table1_stage ) s ON table1.order_id = s.order_id WHEN MATCHED THEN UPDATE table1.order_amount = s.order_amount WHEN NOT MATCHED THEN INSERT * カタログのポインタ db1.table1 → table1/metadata/v3.metadata.json オブジェクトストレージの中の様子 table1/ ├ metadata/ ├ v1.metadata.json ├ v2.metadata.json ├ v3.metadata.json New! ├ snap-178s9-fsdo.avro ├ snap-tman-safs.avro New! ├ dlwo-soagn-1o.avro ├ wosa-ga-63wa.avro New! ├ data/ ├ order_ts_hour=2025-01-26-8 ├ 000-1-awx.parquet ├ 000-55-sag.parquet New! ├ order_ts_hour=2025-01-27-10 ├ 000-4-ganb.parquet New! メタデータ ファイル S0 S1 マニフェスト リスト マニフェスト ファイル メタデータ ファイル S0 S1 マニフェスト リスト マニフェスト ファイル データ ファイル データ ファイル データ ファイル S2
Icebergの最適化 14 最適化方式 概要 コンパクション (圧縮) サイズの小さい複数ファイルを1つのファイルに置き換える。 Binpack(ファイルの書き換えのみ)、Sort(事前にソートしてから書き換え)のようなモードがある。 データのソート 特定のフィールドに基づいてデータをソートする。
テーブルパーティショニング 特定のフィールドの特定の値に基づいて分類する。 Icebergではhidden Partitioningの方式が採用されており、パーティション用の追加列は不要。 更新方法の選択 Copy-on-Write: 対象ファイルでデータが1行でも書き込まれたら、全て新規に書き換え。 Merge-on-Read: 更新を新規のデータファイルとして管理し、読み込み時に一緒に読み込む。 ストレージ最適化 スナップショット削除や孤立ファイル削除を行う。 並列化モードの選択 タスクの配分をパーティションキーを基準に分散する。 ブルームフィルター 特定の値がデータセットの中にあるかどうかを知るクエリ。 不要なスキャンを避ける。 最適化の基本の考え方はスキャン回数を最小限にして必要な情報を得られるようにデータ配置を調整する
AWSでのIcebergの取り扱い 15 Before re:Invent 2024 メタデータ ファイル マニフェスト リスト マニフェスト
ファイル データ ファイル S0 S1 Icebergカタログ メタデータポインタ メタデータ レイヤ Amazon S3 Standard or Intelligent-Tiering AWS Glue Data Catalog Amazon EMR Spark Catalog 分析ツール Amazon Athena Amazon EMR AWS Glue カタログはセットアップ が必要 ストレージ最適化は 基本は自分で実施 ※ ※ Re:invent2024後にAWS Glue データカタログでIcebergテーブルの高度な自動化が提供された https://aws.amazon.com/jp/about-aws/whats-new/2024/12/aws-glue-data-catalog-automatic-optimization-iceberg-tables/ データ レイヤ
AWSでのIcebergの取り扱い 16 メタデータ ファイル マニフェスト リスト マニフェスト ファイル データ ファイル
S0 S1 Icebergカタログ メタデータポインタ メタデータ レイヤ AWS Glue Data Catalog 分析ツール データ レイヤ 自動でカタログ作成 自動でストレージ最適化 • 圧縮 • スナップショット管理 • 参照されていないファイル削除 クエリパフォーマンスが最大 3 倍高速 プレビュー 分析サービスとの統合 Amazon S3 Tables Amazon Athena Amazon EMR AWS Glue Amazon Redshift After re:Invent 2024
17 ちなみに 2025/1/17 東京リージョンでもS3 Tablesが使えるようになりました! https://aws.amazon.com/about-aws/whats-new/2025/01/amazon-s3-tables-additional-aws-regions/
18 Iceberg の特徴を知る 01 AWSとIceberg の連携方式を知る 02 S3 Tables の特徴を捉える
03 本日お伝えしたいこと
参考文献 Books ⚫ Apache Iceberg: The Definitive Guide Web ⚫
Apache Iceberg: An Architectural Look Under the Covers ⚫ Spark and Iceberg Quickstart ⚫ Using Apache Iceberg on AWS ⚫ Working with Amazon S3 Tables and table buckets Video ⚫ What is Apache Iceberg? 19