Bigdata, Lakehouse

Jeonghak Choยท2025๋…„ 5์›” 11์ผ

Bigdata

๋ชฉ๋ก ๋ณด๊ธฐ
24/30

๐Ÿ“—Lakehouse๊ฐœ์š”

๐Ÿณ๏ธโ€๐ŸŒˆ [๊ถ๊ธˆํ•œ์ ]

  • ์™œ Lakehouse๋ฅผ ์จ์•ผ ํ• ๊นŒ
  • ์นดํƒˆ๋กœ๊ทธ๋Š” ๋ฌด์—‡์ธ๊ฐ€

๐Ÿ”—[๋ชฉ์ฐจ]

Lakehouse ๊ฐœ์š”

Lakehouse๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค(Data Warehouse) ์™€ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ(Data Lake) ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ์ฐจ์„ธ๋Œ€ ๋ฐ์ดํ„ฐ ์•„ํ‚คํ…์ฒ˜์ด๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ "Lake(ํ˜ธ์ˆ˜) + House(์ฐฝ๊ณ )"์˜ ๊ฐœ๋…์œผ๋กœ, ์œ ์—ฐํ•œ ์ €์žฅ์†Œ์™€ ๊ฐ•๋ ฅํ•œ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๊ณ ์ž ๋“ฑ์žฅํ–ˆ๋‹ค.

Lakehouse๋Š” ํŠนํžˆ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง, ML, BI๋ฅผ ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ์—์„œ ํ†ตํ•ฉํ•˜๋ ค๋Š” ์กฐ์ง์— ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.

Lakehouse ๋ฐฐ๊ฒฝ ๋ฐ ํ•„์š”์„ฑ

Data Lake๋Š” ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ €๋ ดํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ, ์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ, ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์—์„œ ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๋‹ค.
Data Warehouse๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ €์žฅ ๋น„์šฉ์ด ๋†’๊ณ  ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์•ฝํ–ˆ๋‹ค.
์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด Lakehouse Architecture์ด๋‹ค.

Lakehouse ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ํŠน์ง•

ํ•ญ๋ชฉ์„ค๋ช…
๋‹จ์ผ ์ €์žฅ์†Œ์ •ํ˜•, ๋ฐ˜์ •ํ˜•, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ์Šคํ† ๋ฆฌ์ง€(S3, HDFS ๋“ฑ)์— ์ €์žฅ
์˜คํ”ˆ ํฌ๋งทParquet, ORC, Iceberg, Delta Lake ๋“ฑ ์˜คํ”ˆ ํฌ๋งท ์‚ฌ์šฉ
ํŠธ๋žœ์žญ์…˜ ์ง€์›ACID ํŠธ๋žœ์žญ์…˜ ์ง€์›์œผ๋กœ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
์นดํƒˆ๋กœ๊ทธ ๊ด€๋ฆฌHive Metastore, Unity Catalog, AWS Glue ๋“ฑ์œผ๋กœ ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ
๊ณ ์„ฑ๋Šฅ ์ฟผ๋ฆฌ ์—”์ง„Trino, Apache Spark, Dremio ๋“ฑ์œผ๋กœ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฐ€๋Šฅ
ML/BI ํ†ตํ•ฉML ๋ชจ๋ธ ํ›ˆ๋ จ๊ณผ BI ๋ถ„์„ ๋ชจ๋‘ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

Lakehouse ๊ตฌ์„ฑ ์š”์†Œ ์˜ˆ์‹œ

  • ์Šคํ† ๋ฆฌ์ง€: Amazon S3, Azure Data Lake, MinIO
  • ํฌ๋งท: Apache Iceberg, Delta Lake, Hudi
  • ์—”์ง„: Apache Spark, Trino, Presto, Flink
  • ๋ฉ”ํƒ€์Šคํ† ์–ด: Hive Metastore, AWS Glue
  • ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: Airflow, Dagster
  • BI/ML ๋„๊ตฌ: Tableau, PowerBI, Jupyter, DBT

Lakehouse ์žฅ์ 

  • ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์‚ฌ์ผ๋กœ: ์šด์˜/๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ ํ”Œ๋žซํผ์—์„œ ์ฒ˜๋ฆฌ
  • ์œ ์—ฐ์„ฑ: ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ(ETL, ML, BI)์— ๋Œ€์‘
  • ๋น„์šฉ ํšจ์œจ์„ฑ: ์ €๋ ดํ•œ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ + ์˜คํ”ˆ์†Œ์Šค ์ƒํƒœ๊ณ„
  • ํ™•์žฅ์„ฑ: ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ธ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ

๋Œ€ํ‘œ ๊ธฐ์ˆ  ์Šคํƒ ๋น„๊ต

ํ•ญ๋ชฉData LakeData WarehouseLakehouse
์ €์žฅ ํฌ๋งทParquet, JSONColumnar (Proprietary)Parquet + Table Format (Iceberg ๋“ฑ)
์ฟผ๋ฆฌ๋А๋ฆผ๋น ๋ฆ„๋น ๋ฆ„
ํŠธ๋žœ์žญ์…˜์—†์Œ์žˆ์Œ์žˆ์Œ
ML ์ง€์›๊ฐ•ํ•จ์•ฝํ•จ๊ฐ•ํ•จ
์Šคํ‚ค๋งˆ ๊ฐ•์ œ์•ฝํ•จ๊ฐ•ํ•จ๊ฐ•ํ•จ

Lakehouse ์•„ํ‚คํ…์ฒ˜

๋ ˆ์ดํฌํ•˜์šฐ์Šค(Lakehouse) ์•„ํ‚คํ…์ฒ˜๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค(DW) ์™€ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ(Data Lake) ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ์ฐจ์„ธ๋Œ€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ €์žฅํ•˜๋ฉด์„œ๋„, ๋ถ„์„ยทBIยท๋จธ์‹ ๋Ÿฌ๋‹ ์šฉ๋„๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์ผ๊ด€์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์ œ์ 

  • Data Lake: ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์€ ๋›ฐ์–ด๋‚˜๋‚˜, ์Šคํ‚ค๋งˆ ์—†์Œ, ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑยทํ’ˆ์งˆ ๋ถ€์กฑ
  • Data Warehouse: ์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋›ฐ์–ด๋‚˜๋‚˜, ์œ ์—ฐ์„ฑ ๋ถ€์กฑ, ๋น„์šฉ ์ฆ๊ฐ€
    โ†’ Lakehouse๋Š” ์ด ๋‘˜์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ณ  ์žฅ์ ์„ ๊ฒฐํ•ฉ

ํ•ต์‹ฌ ๊ธฐ์ˆ  ์š”์†Œ

๊ตฌ์„ฑ ์š”์†Œ์„ค๋ช…
Object Storage์ €๋ ดํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ (S3, MinIO ๋“ฑ)
Table FormatIceberg, Delta Lake, Hudi โ†’ ACID ํŠธ๋žœ์žญ์…˜, ์Šค๋ƒ…์ƒท, ์Šคํ‚ค๋งˆ ์ง„ํ™” ๋“ฑ ์ง€์›
Catalogํ…Œ์ด๋ธ” ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ (HMS, Glue, Nessie ๋“ฑ)
Query Engine๋Œ€ํ™”ํ˜• ์ฟผ๋ฆฌ ๋ฐ ๋ถ„์„ ์ฒ˜๋ฆฌ (Trino, Spark, Flink ๋“ฑ)
BI/ML ๋„๊ตฌTableau, Superset, Jupyter, Pandas ๋“ฑ๊ณผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ

์•„ํ‚คํ…์ฒ˜ ์ฃผ์š” ํŠน์ง•

ํŠน์ง•์„ค๋ช…
ACID ์ง€์›Iceberg ๋“ฑ์˜ ํ…Œ์ด๋ธ” ํฌ๋งท์ด ํŠธ๋žœ์žญ์…˜, ๋กค๋ฐฑ ๋“ฑ ์ œ๊ณต
์Šคํ‚ค๋งˆ ์ง„ํ™”์ปฌ๋Ÿผ ์ถ”๊ฐ€/๋ณ€๊ฒฝ ๋“ฑ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ€๋Šฅ
ํƒ€์ž… ํ˜ผํ•ฉ์ •ํ˜•/๋ฐ˜์ •ํ˜•/๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ํ˜ผํ•ฉ ์ฒ˜๋ฆฌ
๊ณ ์† ์ฟผ๋ฆฌ์ปฌ๋Ÿผ ํ”„๋ฃจ๋‹, ํŒŒํ‹ฐ์…”๋‹, Z-order ์ •๋ ฌ ๋“ฑ์œผ๋กœ ์ตœ์ ํ™”
์˜คํ”ˆ ํฌ๋งทParquet, ORC, Avro ๋“ฑ์˜ ํ‘œ์ค€ ํฌ๋งท ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„ ์˜ˆ์‹œ

์Šคํƒ์„ค๋ช…
MinIO + Iceberg + Hive Metastore + Trino์˜คํ”ˆ์†Œ์Šค๋กœ ๋ ˆ์ดํฌํ•˜์šฐ์Šค ๊ตฌ์ถ•, ๋น„์šฉ ํšจ์œจ ๋†’์Œ
AWS S3 + Glue + Athena / EMR + Iceberg์„œ๋ฒ„๋ฆฌ์Šค ๋˜๋Š” Spark ๊ธฐ๋ฐ˜ ๊ณ ๋„ํ™” ํ™˜๊ฒฝ
Databricks (Delta Lake)์ƒ์—…์  ์™„์„ฑ๋„ ๋†’์ง€๋งŒ ๋น„์šฉ ์žˆ์Œ

์•„ํ‚คํ…์ฒ˜ ์žฅ์  vs ๋‹จ์ 

์žฅ์ ๋‹จ์ 
๋น„์šฉ ์ ˆ๊ฐ (object storage ๊ธฐ๋ฐ˜)์ดˆ๊ธฐ ๊ตฌ์„ฑ ๋ณต์žก๋„
ํ™•์žฅ์„ฑ ์šฐ์ˆ˜์„ฑ๋Šฅ ํŠœ๋‹ ํ•„์š”
๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ์—ฐ๊ณ„Table Format ์ดํ•ด ํ•„์š”
๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ํ–ฅ์ƒ

์นดํƒˆ๋กœ๊ทธ

์นดํƒˆ๋กœ๊ทธ ๊ฐœ์š”

๋ ˆ์ดํฌํ•˜์šฐ์Šค(Lakehouse) ์•„ํ‚คํ…์ฒ˜์—์„œ ์นดํƒˆ๋กœ๊ทธ(Catalog) ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ฟผ๋ฆฌ ์—”์ง„๊ณผ์˜ ์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋‹ค.

์นดํƒˆ๋กœ๊ทธ์˜ ์ •์˜

๋ ˆ์ดํฌํ•˜์šฐ์Šค ์นดํƒˆ๋กœ๊ทธ๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ์— ์ €์žฅ๋œ ํ…Œ์ด๋ธ”, ๋ทฐ, ํŒŒํ‹ฐ์…˜, ์Šคํ‚ค๋งˆ ๋“ฑ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, S3๋‚˜ HDFS ๊ฐ™์€ ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค.

์ฃผ์š” ์—ญํ• 

  • ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ: ์ปฌ๋Ÿผ ์ด๋ฆ„, ํƒ€์ž…, ํŒŒํ‹ฐ์…˜ ์ •๋ณด ๋“ฑ์„ ์œ ์ง€
  • ๋ฐ์ดํ„ฐ ์œ„์น˜ ์ถ”์ : ํ…Œ์ด๋ธ”์ด๋‚˜ ํŒŒํ‹ฐ์…˜์ด ์–ด๋А ๊ฒฝ๋กœ(S3 URI ๋“ฑ)์— ์ €์žฅ๋ผ ์žˆ๋Š”์ง€ ์ถ”์ 
  • ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ํŠธ๋žœ์žญ์…˜ ์ง€์›: Iceberg, Delta Lake ๊ฐ™์€ ํฌ๋งท์—์„œ๋Š” ์Šค๋ƒ…์ƒท ๋ฐ ACID ํŠธ๋žœ์žญ์…˜์„ ์ง€์›
  • ์ฟผ๋ฆฌ ์—”์ง„ ์—ฐ๋™: Trino, Spark, Flink ๋“ฑ์ด ์นดํƒˆ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ

์นดํƒˆ๋กœ๊ทธ์˜ ์œ ํ˜•

  • Hive Metastore: ์ „ํ†ต์ ์ธ ์นดํƒˆ๋กœ๊ทธ, Iceberg๋‚˜ Delta Lake์—์„œ ์ง€์›
  • Nessie / AWS Glue / Unity Catalog: ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฐ•ํ™”ํ˜• ์นดํƒˆ๋กœ๊ทธ
  • Iceberg Catalog: JDBC, Hive, REST ๋“ฑ์„ ํ†ตํ•ด ์ž์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • Hudi: ์ž์ฒด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ ํฌํ•จ

๋ ˆ์ดํฌํ•˜์šฐ์Šค์—์„œ์˜ ์นดํƒˆ๋กœ๊ทธ์˜ ์ค‘์š”์„ฑ

  • ๋‹ค์–‘ํ•œ ์—”์ง„ ๊ฐ„ ํ˜ธํ™˜์„ฑ ํ™•๋ณด
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ณด์žฅ ๋ฐ ํŠธ๋žœ์žญ์…˜ ์ถ”์ 
  • ์Šคํ‚ค๋งˆ ์ง„ํ™”, ํƒ€์ž„ ํŠธ๋ž˜๋ธ”, ๋ฐ์ดํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋“ฑ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์ง€์›

Iceberg ์นดํƒˆ๋กœ๊ทธ

Iceberg๋Š” ๋‹ค์–‘ํ•œ ์นดํƒˆ๋กœ๊ทธ ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด ์ค‘ Hive Metastore(HMS), REST, JDBC, Nessie ๋“ฑ์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

Iceberg ํ…Œ์ด๋ธ”์€ ์•„๋ž˜ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค

์นดํƒˆ๋กœ๊ทธ (Catalog)
 โ””โ”€โ”€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (Namespace / DB)
      โ””โ”€โ”€ ํ…Œ์ด๋ธ” (Iceberg Table)
           โ””โ”€โ”€ ์Šค๋ƒ…์ƒท, ๋งค๋‹ˆํŽ˜์ŠคํŠธ, ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋“ฑ

์ฃผ์š” Iceberg ์นดํƒˆ๋กœ๊ทธ ์ข…๋ฅ˜

์œ ํ˜•์„ค๋ช…์‚ฌ์šฉ ์˜ˆ์‹œ
HiveCatalogHive Metastore๋ฅผ ์‚ฌ์šฉTrino, Spark์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
HadoopCatalogํŒŒ์ผ ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜ ์นดํƒˆ๋กœ๊ทธHive ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ
RESTCatalogREST API๋กœ ๊ตฌํ˜„๋œ Iceberg ๋„ค์ดํ‹ฐ๋ธŒ ์นดํƒˆ๋กœ๊ทธํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ, Nessie ์—ฐ๋™
JDBCCatalogJDBC ์—ฐ๊ฒฐ๋กœ RDB์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅPostgreSQL, MySQL ๋“ฑ
NessieCatalogGit์ฒ˜๋Ÿผ ๋ธŒ๋žœ์น˜/๋ฒ„์ „ ๊ด€๋ฆฌ๊ณ ๊ธ‰ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ฐ ํ˜‘์—… ์‹œ ์‚ฌ์šฉ

์˜ˆ์‹œ: HiveCatalog ๊ตฌ์„ฑ (Trino + HMS + MinIO)

connector.name=iceberg
iceberg.catalog.type=hive
hive.metastore.uri=thrift://hive-metastore:9083
iceberg.file-format=parquet
hive.s3.endpoint=http://minio:9000
hive.s3.aws-access-key=minioadmin
hive.s3.aws-secret-key=minioadmin
hive.s3.path-style-access=true

์ด ๊ตฌ์„ฑ์€ Trino๊ฐ€ Iceberg ํ…Œ์ด๋ธ”์„ Hive Metastore๋ฅผ ํ†ตํ•ด ์ธ์‹ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋Š” MinIO(S3) ์— ์ €์žฅ๋œ๋‹ค.

์˜ˆ์‹œ: HadoopCatalog ๊ตฌ์„ฑ (Spark ๋‹จ๋…)

spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog
spark.sql.catalog.my_catalog.type=hadoop
spark.sql.catalog.my_catalog.warehouse=s3a://my-bucket/warehouse

์ด ๋ฐฉ์‹์€ Hive ์—†์ด๋„ Iceberg๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

์นดํƒˆ๋กœ๊ทธ ํ™œ์šฉ

๋ชฉ์ ์ถ”์ฒœ ์นดํƒˆ๋กœ๊ทธ
Hive์™€ ์—ฐ๋™ (Trino/Spark ๊ณต์šฉ)HiveCatalog
Hive ์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒHadoopCatalog
๋ฐ์ดํ„ฐ ๋ธŒ๋žœ์น˜/๋ฒ„์ „ ๊ด€๋ฆฌNessieCatalog
์ปค์Šคํ…€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ์‚ฌ์šฉJDBCCatalog

hive catalog

HiveCatalog๋Š” Apache Iceberg์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์นดํƒˆ๋กœ๊ทธ ์ค‘ ํ•˜๋‚˜๋กœ, Hive Metastore(HMS) ๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์นดํƒˆ๋กœ๊ทธ์ด๋‹ค. HiveCatalog๋Š” ๊ธฐ์กด Hive ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜๋ฉด์„œ Iceberg์˜ ๊ธฐ๋Šฅ(์Šค๋ƒ…์ƒท, ํŠธ๋žœ์žญ์…˜, ์Šคํ‚ค๋งˆ ์ง„ํ™” ๋“ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ Hive Metastore๋ฅผ ์‚ฌ์šฉ
  • ํ…Œ์ด๋ธ” ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ HMS์— ์ €์žฅ
  • Iceberg ํ…Œ์ด๋ธ”์€ HMS์— ๋“ฑ๋ก๋˜์ง€๋งŒ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” S3, HDFS, MinIO ๋“ฑ์— ์ €์žฅ

HiveCatalog ๊ตฌ์„ฑ ๊ตฌ์กฐ

Hive Metastore
 โ””โ”€โ”€ Database (Namespace)
      โ””โ”€โ”€ Table (Iceberg Table)
           โ”œโ”€โ”€ Metadata ํŒŒ์ผ (S3 ๋˜๋Š” HDFS)
           โ””โ”€โ”€ Data ํŒŒ์ผ (Parquet, ORC ๋“ฑ)

Hive Metastore๋Š” ํ…Œ์ด๋ธ”์˜ ๋…ผ๋ฆฌ ์ •๋ณด(์ด๋ฆ„, ์œ„์น˜) ๋งŒ ์ €์žฅ

Iceberg์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ๋“ค์€ ์Šคํ† ๋ฆฌ์ง€(S3/MinIO ๋“ฑ)์— ์ €์žฅ

HiveCatalog ํŠน์ง•

ํ•ญ๋ชฉ์„ค๋ช…
ํ˜ธํ™˜์„ฑTrino, Spark, Flink ๋“ฑ ๋‹ค์–‘ํ•œ ์—”์ง„์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
ACID ํŠธ๋žœ์žญ์…˜Iceberg ํฌ๋งท์ด ์ œ๊ณต, HMS๋Š” ๋‹จ์ˆœ ๋ฉ”ํƒ€ ์ €์žฅ
S3 ํ˜ธํ™˜MinIO, AWS S3, HDFS ๋“ฑ ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
์˜์กด์„ฑHMS ์„œ๋น„์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ

HiveCatalog ์‚ฌ์šฉ ์‹œ ์žฅ์ 

  • ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ: ๋‹ค์–‘ํ•œ ์—”์ง„์—์„œ ๋™์ผํ•œ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ ๊ฐ€๋Šฅ
  • ๋ ˆ๊ฑฐ์‹œ Hive ํ…Œ์ด๋ธ”๊ณผ์˜ ์—ฐ๊ณ„ ๊ฐ€๋Šฅ
  • ํŠธ๋žœ์žญ์…˜ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ (Iceberg ๋•๋ถ„์—)

HiveCatalog ํ•œ๊ณ„์ 

  • Hive Metastore๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•ญ์‹œ ๊ฐ€๋™ ์ค‘์ด์–ด์•ผ ํ•˜๋ฉฐ, ๋„คํŠธ์›Œํฌ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • Metastore์˜ ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ์ฃผ์˜ (ํŠนํžˆ Trino, Spark ๋“ฑ๊ณผ)

hive catalog๋Š” hdfs๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜

HiveCatalog ์ž์ฒด๊ฐ€ HDFS๋ฅผ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. HiveCatalog๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ Hive Metastore(HMS) ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ Iceberg ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ HDFS, S3, MinIO ๋“ฑ ์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ์ €์žฅ ์œ„์น˜์„ค๋ช…
Hive Metastore (HMS)RDB (MySQL/PostgreSQL ๋“ฑ)ํ…Œ์ด๋ธ” ์ด๋ฆ„, ์œ„์น˜, ์Šคํ‚ค๋งˆ ๋“ฑ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
Iceberg ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผHDFS ๋˜๋Š” S3/MinIO ๋“ฑ.metadata.json, ์Šค๋ƒ…์ƒท ๋“ฑ Iceberg ํŠน์œ ์˜ ์ •๋ณด
์‹ค์ œ ๋ฐ์ดํ„ฐ ํŒŒ์ผHDFS ๋˜๋Š” S3/MinIO ๋“ฑParquet/ORC ๋“ฑ์˜ ํฌ๋งท์œผ๋กœ ์ €์žฅ๋จ

0๊ฐœ์˜ ๋Œ“๊ธ€