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
130
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
620
S3 Metadataの仕組みと活用方法
shuyasawa
0
39
S3のライフサイクルをAmazon Braketで最新化してみる
shuyasawa
0
19
Other Decks in Technology
See All in Technology
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
350
AWSの資格って役に立つの?
tk3fftk
2
330
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
Claude Code 2026年 最新アップデート
oikon48
12
9.8k
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
180
Kubernetesにおける推論基盤
ry
1
380
Everything Claude Code を眺める
oikon48
3
2.9k
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
430
進化するBits AI SREと私と組織
nulabinc
PRO
0
160
Lambda Web AdapterでLambdaをWEBフレームワーク利用する
sahou909
0
120
[JAWSDAYS2026][D8]その起票、愛が足りてますか?AWSサポートを味方につける、技術的「ラブレター」の書き方
hirosys_
3
180
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
1.5k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Ethics towards AI in product and experience design
skipperchong
2
220
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Exploring anti-patterns in Rails
aemeredith
2
290
Amusing Abliteration
ianozsvald
0
130
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
The SEO Collaboration Effect
kristinabergwall1
0
390
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