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
98
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
590
S3 Metadataの仕組みと活用方法
shuyasawa
0
17
S3のライフサイクルをAmazon Braketで最新化してみる
shuyasawa
0
14
Other Decks in Technology
See All in Technology
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
1.6k
ググるより、AIに聞こう - Don’t Google it, ask AI
oikon48
0
930
[mercari GEARS 2025] なぜメルカリはノーコードを選ばなかったのか? 社内問い合わせ工数を60%削減したLLM活用の裏側
mercari
PRO
0
120
Quarkusで作るInteractive Stream Application
joker1007
0
150
Rubyist入門: The Way to The Timeless Way of Programming
snoozer05
PRO
7
510
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
4.6k
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
550
JAWS-UG SRE支部 #14 LT
okaru
0
110
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
技術広報のOKRで生み出す 開発組織への価値 〜 カンファレンス協賛を通して育む学びの文化 〜 / Creating Value for Development Organisations Through Technical Communications OKRs — Nurturing a Culture of Learning Through Conference Sponsorship —
pauli
5
370
ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀
inao
5
3.3k
re:Invent2025 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
140
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Done Done
chrislema
186
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
We Have a Design System, Now What?
morganepeng
54
7.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Code Reviewing Like a Champion
maltzj
527
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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