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
83
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
13
S3のライフサイクルをAmazon Braketで最新化してみる
shuyasawa
0
14
Other Decks in Technology
See All in Technology
OPENLOGI Company Profile for engineer
hr01
1
45k
入院医療費算定業務をAIで支援する:包括医療費支払い制度とDPCコーディング (公開版)
hagino3000
0
110
AIプロダクトのプロンプト実践テクニック / Practical Techniques for AI Product Prompts
saka2jp
0
120
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
460
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
290
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
300
re:Inventに行くまでにやっておきたいこと
nagisa53
0
600
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
140
AI時代の開発を加速する組織づくり - ブログでは書けなかったリアル
hiro8ma
2
330
CLIPでマルチモーダル画像検索 →とても良い
wm3
0
250
オブザーバビリティと育てた ID管理・認証認可基盤の歩み / The Journey of an ID Management, Authentication, and Authorization Platform Nurtured with Observability
kaminashi
1
1k
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
290
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
4 Signs Your Business is Dying
shpigford
185
22k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Bash Introduction
62gerente
615
210k
Site-Speed That Sticks
csswizardry
13
930
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
It's Worth the Effort
3n
187
28k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
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