$30 off During Our Annual Pro Sale. View Details »
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
110
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
600
S3 Metadataの仕組みと活用方法
shuyasawa
0
25
S3のライフサイクルをAmazon Braketで最新化してみる
shuyasawa
0
15
Other Decks in Technology
See All in Technology
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
470
オープンソースKeycloakのMCP認可サーバの仕様の対応状況 / 20251219 OpenID BizDay #18 LT Keycloak
oidfj
0
180
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
200
障害対応訓練、その前に
coconala_engineer
0
200
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
150
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
210
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
160
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
240
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.9k
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
170
Introduce marp-ai-slide-generator
itarutomy
0
130
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
410
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
Code Review Best Practice
trishagee
74
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
150
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Tell your own story through comics
letsgokoyo
0
760
Un-Boring Meetings
codingconduct
0
160
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
The untapped power of vector embeddings
frankvandijk
1
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
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