๐ง Apache Iceberg: The Definitive Guide ์ฑ ์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
๐ Chapter 1. Introduction to Apache Iceberg ๊ธ ๋ชจ์๋ณด๊ธฐ :
โบ 1ํธ : [Apache Iceberg] ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (1) : OLAP์ Data Warehouse
โบ 2ํธ : [Apache Iceberg] ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (2) : Data Lake์ Data Lakehouse
โบ 4ํธ : [Apache Iceberg] Iceberg ์ค๊ณ ์ํคํ ์ฒ ๋ฐ ์ฃผ์ ํน์ง
๐ก ๋ค์ด๊ฐ๋ฉฐ
์ง๋ ๊ธ์์๋ Data Lake์ Data Lakehouse์ ๋ํด ์ดํด๋ณด์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ Apache Iceberg๊ฐ ๋ฑ์ฅํ๊ฒ ๋ ๋๊น์ง Table Format์ ์ญ์ฌ ํ๋ฆ์ ๋ํด ์งง๊ฒ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1๏ธโฃ Table Format ์ด๋ผ๋ ๊ฐ๋ ์ด ์๊ธฐ๊ธฐ๊น์ง
Table Format์ ์ฌ๋ฌ ํ์ผ๋ค์ ํ๋์ "ํ ์ด๋ธ"๋ก ๊ตฌ์กฐํํ๋(structuring) ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.
์ด ํ ์ด๋ธ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ ์ด๋ธ์ ๋ํ ์ถ์ํ(abstraction)์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ ๋๋ค.
RDBMS์ ์์ , Table Format์ด๋ผ๋ ์ฉ์ด๋ ์ฌ์ฉ๋์ง ์์๋๋ฐ,
์ด๋ ๋น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Storage Engine์ด ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ๋ชจ๋ ๋์์ ๋ด๋นํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ์ดํฐ๊ฐ ์ด๋์ ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง๋ ์ถ์ํ ๋์ด ์ฌ์ฉ์๊ฐ ๋ชจ๋ฅด๋ ๊ฒ์ด ๋น์ฐํ๊ฒ ์ฌ๊ฒจ์ก์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ชฉ์ ์ ๋ง๋ ๋ค์ํ Compute Engine์ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ํด๋น ๋ฌธ์ ๊ฐ ์๋ฉด ์๋ก ์ฌ๋ผ์ค๊ฒ ๋์์ต๋๋ค.
๋ฐ์ดํฐ๊ฐ AWS S3, GCS์ ๊ฐ์ Storage์ ํ์ผ๋ก ์ ์ฅ๋๋ฉด์, ์ด๋ค ๋ฐ์ดํฐ ํ์ผ์ด ํ ์ด๋ธ์ ํฌํจ๋๋์ง๋ฅผ ๊ณ์ํด์ ์ ์ํด์ฃผ๋ ์ผ์
๋งค์ฐ ๋ฒ๊ฑฐ๋ก์ธ ๋ฟ๋ง ์๋๋ผ, ๋ฐ์ดํฐ์ ๋ถ์ผ์น(inconsistency)๊น์ง๋ก ์ด์ด์ก์ต๋๋ค.
๋ฐ๋ผ์ "์ด ํ ์ด๋ธ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์๋์ง"๋ฅผ ๋ํ๋ด๋ ํ์คํ ๋ ๋ฐฉ๋ฒ์ด ๋ง๋ค์ด์ง๊ฒ ๋์์ต๋๋ค.

2๏ธโฃ "Hive" Table Format์ ์๋
Hadoop์ ์ฌ์ฉํ๋ ๋ MapReduce๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Java๋ก ๋ณต์กํ๊ณ ์ด๋ ต๊ฒ Job์ ์์ฑํด์ผ ํ์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด SQL์ MapReduce job์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ํ๋ ์์ํฌ์ธ Hive๊ฐ ๋ฑ์ฅํ์ต๋๋ค.
SQL์ ์ฌ์ฉํ๊ธฐ ์ํด์ Hadoop ์คํ ๋ฆฌ์ง์ ์๋ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ํ ์ด๋ธ์ ๋ํ๋ด๋์ง์ ๋ํ ์ฒด๊ณ์ ํ ์ด๋ธ์ ์ถ์ (tracking)ํ๋
Hive Table Format๊ณผ Hive Metastore๊ฐ ํ์ํ์ต๋๋ค.
Hive Table Format์ ํ๋์ ํ ์ด๋ธ์ ํน์ ๋๋ ํ ๋ฆฌ(prefix)์ ์๋ ํ์ผ๋ค๋ก ์ ์ํ์ต๋๋ค.
ํํฐ์ ์ ์๋ธ๋๋ ํ ๋ฆฌ๋ก ๋๋์ด์ก์ต๋๋ค.
Hive metastore๋ ์ด๋ฌํ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํด์ Query Engine์ด Query์ ์ฌ์ฉํ ๋ฐ์ดํฐ๊ฐ ์ด๋ ์๋์ง ์ ์ ์๋๋ก ํ์ต๋๋ค.

๊ทธ๋ ๋ค๋ฉด Hive Table Format์ ์ฅ๋จ์ ์ ๋ํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ข Hive Table Format์ ์ฅ์
- ํํฐ์ ๋(Partitioning)๊ณผ ๋ฒ์ผํ (bucketing) ์ง์ → ํ ์ด๋ธ์ Full Scan ํ์ง ์๊ณ ํจ์จ์ ์ผ๋ก Queryํ ์ ์๋ค.
- File Format๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค.
- ํ ์ด๋ธ์ ํํฐ์ ์ ๋ํด์ ์์์ (atmoic) ๋ณํ๋ฅผ ์ง์ํ๋ค.
- ๋ง์ ๊ณณ์์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.
๐ด Hive Table Format์ ๋จ์
- Partition ๋จ์๋ ๊ฐ๋ฅํ์ง๋ง File ํ๋๋ง ์์์ ์ผ๋ก ๊ต์ฒดํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
- ์ฌ๋ฌ Partition์ ํ๋์ ํธ๋์ญ์ ์์ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ฐ๋ ์์ ์ด ๋ถ์์ ์ ์ด๋ค.
- ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ์ฝ์ด์ค๋ ์์ ๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ์ด๋ค(=๋๋ ค์ง๋ค)
- ํํฐ์ ๋์ด ์ ์ฉ๋ ์ปฌ๋ผ์ ์ ํํ ์๊ณ ์์ด์ผ Full Table Scan์ด ๋ฐ์ํ์ง ์๋๋ค.
- ํ
์ด๋ธ ํต๊ณ ์์ง์ด ๋ณ๋๋ก ์ด๋ค์ ธ ์ค๋๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ ์ต์ ํ๊ฐ ์ด๋ ค์์ง๋ค.
(ANALYZE TABLE ... COMPUTE STATISTICS ๊ฐ์ ๋ช ๋ น์ ์คํํด์ผ ํต๊ณ๋ฅผ ๊ฐฑ์ ํ๋ค) - Object Storage์์ ๋์ผํ prefix์ ๋ํ ๋์ ๋ค๋ฐ์ ์์ฒญ์ ์ ํ(throttling)ํ๋ฉด์ ์ฑ๋ฅ์ด ์ ํ๋๋ค.
๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก, ์ด๋ฐ ๋ฌธ์ ๊ฐ ์ปค์ก๊ธฐ ๋๋ฌธ์
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ก์ด Table Format์ด ํ์ํด์ก์ต๋๋ค.
3๏ธโฃ ์๋ก์ด Table Format์ด ํ์ํด์ง๋ค
Hive Table Format์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํ์ต๋๋ค.
Hive Table์์ ๊ทผ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ด๋ผ ์ ์ํ์ง, ๊ฐ๋ณ ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋ฐํ์ง ์์์ต๋๋ค.
Apache Iceberg, Apache Hudi, Delta Lake์ ๊ฐ์ ํ๋ Table Format์
ํ ์ด๋ธ์ ํ์ผ ๋ชฉ๋ก์ผ๋ก ์ ์ํ๊ณ , ์์ง์๊ฒ ์ด๋ค ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ์ด๋ค ํ์ผ๋ก ํ ์ด๋ธ์ด ์ด๋ค์ก๋์ง์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ ๊ฒ ๋ฌด์์ด ํ ์ด๋ธ์ธ์ง ์ ์๋ฅผ ๋์ฑ ์ธ๋ถํํ๋ฉด์ ๋ค์ํ ๊ธฐ๋ฅ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- ACID ํธ๋์ญ์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- ์ฌ๋ฌ๋ช ์ด ์ฐ๊ธฐ๋ฅผ ํด๋ ์์ ํ ํธ๋์ญ์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- ํ ์ด๋ธ์ ํต๊ณ ์ ๋ณด์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ ํจ์จ์ ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
์ด๋ฒ ๊ธ์์ Table Format์ ๋ํด ์ดํด๋ณด๋ฉด์, ๋ฌธ๋ ์ง๋ 1ํธ์์์ ๋์๊ด ๋น์ ๊ฐ ์๋ชป ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
ํ์ง๋ง ์ด๋ป๊ฒ ์์ ํด์ผ ํ ์ง๊น์ง๋ ๋ฐฉํฅ์ฑ์ด ์กํ์ง ์๋ ์ดํด ์์ค ์ํ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์์๊ฐ์๋ก ๋ ๋ชจ๋ฅด๊ฒ ๋ ๊ฒ์ด ๊ณต๋ถ๊ฒ ์ง์. ์ด์ ์ ๋ง Apahce Iceberg์ ๋ํด ๋ค์ ๊ธ์์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.

'๐ Data Engineering > Iceberg' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Apache Iceberg] Iceberg ์ค๊ณ ์ํคํ ์ฒ ๋ฐ ์ฃผ์ ํน์ง (0) | 2025.09.22 |
|---|---|
| [Apache Iceberg] ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (2) : Data Lake์ Data Lakehouse (3) | 2025.08.10 |
| [Apache Iceberg] ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (1) : OLAP์ Data Warehouse (7) | 2025.07.21 |