๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ 4

์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• - 03. Kafka-Iceberg ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Kafka์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•˜์—ฌ Iceberg์— ์ €์žฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ด๋ณด๊ณ ,Kafka์˜ ํŒŒํ‹ฐ์…˜ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ Iceberg๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”์ง€ ์‹คํ—˜ํ•˜๊ณ  ์ดํ•ดํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „๊ธ€(https://jongwho.tistory.com/37)์—์„œ ์„ค์น˜ํ•œ Iceberg ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.๊ตฌ์„ฑ: Kafka → Spark → Iceberg์‹คํ—˜ ์‹œ๋‚˜๋ฆฌ์˜ค:Kafka์—๋Š” 3๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๊ณ , ๊ฐ ํŒŒํ‹ฐ์…˜์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋“ค์–ด์˜ด1๋ฒˆ ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ2๋ฒˆ, 3๋ฒˆ ํŒŒํ‹ฐ์…˜์€ ์ •์ƒ ์ฒ˜๋ฆฌ๋จ์ด ์ƒํ™ฉ์—์„œ Iceberg๋Š” ์–ด๋–ป๊ฒŒ ์ปค๋ฐ‹์„ ์ฒ˜๋ฆฌํ• ๊นŒ?๐Ÿ”ง 1๋‹จ๊ณ„: Kafka & Iceberg ๊ธฐ๋ณธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑKafka ๊ตฌ์„ฑ3๊ฐœ ํŒŒํ‹ฐ์…˜์„ ..

์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• - 02. Iceberg ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

Iceberg์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ณ  Delta-lake, Hudi์™€ ๋น„๊ตํ•˜์—ฌ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.์ด์ „์— ์„ค์น˜ํ•œ Docker Compose์—๋Š” Iceberg์˜ ์˜ˆ์‹œ ์‹คํ–‰ Jupyter ๋…ธํŠธ๋ถ๋„ ํ•จ๊ป˜ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์Šตํ•˜๋ฉฐ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.(https://jongwho.tistory.com/37) Spark ์‹คํ–‰ ์‹œ์ž‘from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("Jupyter").getOrCreate()spark-- ํ…Œ์ด๋ธ” ์ƒ์„ฑCREATE DATABASE IF NOT EXISTS nyc ๋ฐ์ดํ„ฐ ๋กœ๋“œ ๋ฐ ํ…Œ์ด๋ธ” ์ƒ์„ฑdf = spark.read.parquet("/home/iceberg/data/yellow_t..

์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• - 01. Kafka, Iceberg ์„ค์น˜

RedPanda, Iceberg๋ฅผ Docker Compose๋กœ ๊ตฌ์„ฑํ•ด์„œ ์‹ค์‹œ๊ฐ„ ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ์ดˆ ๊ตฌ์„ฑ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Redpanda์™€ Iceberg, Minio๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ชฉํ‘œRedpanda ์„ค์น˜Apache Iceberg ์„ค์น˜Minio ์„ค์น˜์œ„ ์„ค์น˜๋ฅผ Docker compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„โ„๏ธ Iceberg๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?Apache Iceberg๋Š” ๋Œ€๊ทœ๋ชจ ํ…Œ์ด๋ธ”์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ ํฌ๋งท์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด Hive ๋ฉ”ํƒ€์Šคํ† ์–ด ๊ธฐ๋ฐ˜์˜ ๋А๋ฆฌ๊ณ  ๋น„ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, Spark, Trino, Flink ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์„ ๋„๊ตฌ์™€ ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.โœ… Iceberg์˜ ํŠน์ง•ACID ํŠธ๋žœ์žญ์…˜ ์ง€์›Schema Evolution (์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ) ๊ฐ€๋ŠฅPart..

์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• - 00. ์•„ํ‚คํ…์ฒ˜ ์†Œ๊ฐœ

Kafka๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , Iceberg์™€ Delta Lake์— ์ €์žฅํ•œ ๋’ค,Spark๋กœ ์ฒ˜๋ฆฌํ•ด๋ณด๋Š” ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ”ฅ ์ด ์‹œ๋ฆฌ์ฆˆ์˜ ๋ชฉํ‘œDocker ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ์ธ Kafka, Data Lake(Iceberg, Delta lake)๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•„๋ž˜ ๋‚ด์šฉ๋“ค์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.Kafka ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•Docker ๊ธฐ๋ฐ˜ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„ ํ™˜๊ฒฝ ๊ตฌ์ถ•Iceberg Vs Delta Lake ์ฐจ์ด์  ๋น„๊ต ์•„ํ‚คํ…์ฒ˜ ์†Œ๊ฐœKafka๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก RedPanda๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.Iceberg์™€ Delta-Lake๋Š” ๊ณต์‹ ์‚ฌ์ดํŠธ ๋ฐ ๊ณต์‹ github์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค...