๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ

๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
Remarin์˜ ๋‚ ์”จ ์‹ 

ํŒ€ Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ์ œ๊ณต ๊ธฐ์‚ฌ ๋ฒˆ์—ญ Clairvoyant์˜ ์—”์ง€๋‹ˆ์–ด Rahul Bhatia๋Š” ๋น… ๋ฐ์ดํ„ฐ์— ์–ด๋–ค ํŒŒ์ผ ํ˜•์‹์ด ์žˆ๋Š”์ง€, Hadoop ํ˜•์‹์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ค ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์™œ ๋‹ค๋ฅธ ํŒŒ์ผ ํ˜•์‹์ด ํ•„์š”ํ•œ๊ฐ€์š”?

MapReduce ๋ฐ Spark์™€ ๊ฐ™์€ HDFS ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ์•„๋‹Œ ์ง„ํ™”ํ•˜๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ผ๋ถ€ ์ €์žฅ ์ œ์•ฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”์šฑ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

๋น… ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ์Šคํ† ๋ฆฌ์ง€ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๋กœ๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Hadoop์€ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ์™ธ์— ํ”„๋กœ์„ธ์„œ, ๋„คํŠธ์›Œํฌ, ์ž…์ถœ๋ ฅ ์‹œ์Šคํ…œ ๋“ฑ์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋Š˜์–ด๋‚˜๋ฉด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ๋„ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํŒŒ์ผ ํ˜•์‹ ํ•˜๋‘ก ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ํŒŒ์ผ ํ˜•์‹์„ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ฝ๋Š” ์‹œ๊ฐ„์ด ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.
  2. ๋…นํ™” ์‹œ๊ฐ„์ด ๋” ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.
  3. ๊ณต์œ ๋œ ํŒŒ์ผ.
  4. ์Šคํ‚ค๋งˆ ๋ฐœ์ „์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  5. ํ™•์žฅ๋œ ์••์ถ• ์ง€์›.

์ผ๋ถ€ ํŒŒ์ผ ํ˜•์‹์€ ์ผ๋ฐ˜์ ์ธ ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด์กŒ๊ณ , ๋‹ค๋ฅธ ํŒŒ์ผ ํ˜•์‹์€ ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ, ์ผ๋ถ€๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ ํŠน์„ฑ์„ ์ถฉ์กฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ํƒ์˜ ํญ์ด ์ •๋ง ๋„“์Šต๋‹ˆ๋‹ค.

์•„๋ธŒ๋กœ ํŒŒ์ผ ํ˜•์‹

์— ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” Avro๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜, ์ฆ‰ Hadoop์˜ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ๋ฅผ JSON ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ž์ฒด๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ์–ด ์ปดํŒฉํŠธํ•˜๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

Avro์˜ ์ง๋ ฌํ™” ์‹œ์Šคํ…œ์€ ์–ธ์–ด ์ค‘๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ํ˜„์žฌ C, C++, C#, Java, Python ๋ฐ Ruby ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Avro์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š”, ์ฆ‰ ์ง„ํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ง€์›์ž…๋‹ˆ๋‹ค. Avro๋Š” ํ•„๋“œ ์‚ญ์ œ, ์ถ”๊ฐ€, ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์€ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

Avro๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด, ์—ด๊ฑฐ ์œ ํ˜• ๋ฐ ํ•˜์œ„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
์ด ํ˜•์‹์€ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ(๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ - ๋ฐ์ดํ„ฐ ์†Œ์Šค ์™ธ์— ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ์˜ ๋žœ๋”ฉ ์กด์— ์“ฐ๋Š” ๋ฐ ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  1. ์ด ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์‹œ์Šคํ…œ์˜ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ „์ฒด์ ์œผ๋กœ ์ฝํ˜€์ง€๋ฉฐ, ์ด ๊ฒฝ์šฐ ํ–‰ ๊ธฐ๋ฐ˜ ํ˜•์‹์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  2. ๋‹ค์šด์ŠคํŠธ๋ฆผ ์‹œ์Šคํ…œ์€ ํŒŒ์ผ์—์„œ ์Šคํ‚ค๋งˆ ํ…Œ์ด๋ธ”์„ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์™ธ๋ถ€ ๋ฉ”ํƒ€ ์Šคํ† ๋ฆฌ์ง€์— ๋ณ„๋„๋กœ ์Šคํ‚ค๋งˆ๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  3. ์›๋ž˜ ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค(์Šคํ‚ค๋งˆ ์ง„ํ™”).

๋งˆ๋ฃจ ํŒŒ์ผ ํ˜•์‹

Parquet์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” Hadoop์šฉ ์˜คํ”ˆ ์†Œ์Šค ํŒŒ์ผ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ํ”Œ๋žซ ์ปฌ๋Ÿผ ํ˜•์‹์˜ ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.

์ „ํ†ต์ ์ธ ํ–‰ ์ ‘๊ทผ ๋ฐฉ์‹์— ๋น„ํ•ด Parquet๋Š” ์ €์žฅ ๋ฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ๋„“์€(๋งŽ์€ ์—ด) ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ์—ด์„ ์ฝ๋Š” ์ฟผ๋ฆฌ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹ ๋•๋ถ„์— ๊ผญ ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ์ฝ์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— I/O๊ฐ€ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ž‘์€ ์—ฌ๋‹ด๊ณผ ์„ค๋ช…: Hadoop์˜ Parquet ํŒŒ์ผ ํ˜•์‹์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์—ด ๊ธฐ๋ฐ˜(์ฆ‰, ์—ด ํ˜•์‹) ํ˜•์‹์ด ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ๊ฐ ์—ด์— ๋Œ€ํ•ด ์œ ์‚ฌํ•œ ๊ฐ’์„ ํ•จ๊ป˜ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ ˆ์ฝ”๋“œ์—๋Š” ID, ์ด๋ฆ„ ๋ฐ ๋ถ€์„œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ID ์—ด ๊ฐ’์€ ์ด๋ฆ„ ์—ด ๊ฐ’ ๋“ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ๊ป˜ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ID
์„ฑํ•จ
ํ•™๊ณผ

1
emp1
d1

2
emp2
d2

3
emp3
d3

๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

1
emp1
d1
2
emp2
d2
3
emp3
d3

์—ด ํ˜•์‹ ํŒŒ์ผ ํ˜•์‹์—์„œ๋Š” ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

1
2
3
emp1
emp2
emp3
d1
d2
d3

ํ…Œ์ด๋ธ”์—์„œ ์—ฌ๋Ÿฌ ์—ด์„ ์ฟผ๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์—ด ํ˜•์‹์ด ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ์ธ์ ‘ํ•œ ์—ด์ด๋ฏ€๋กœ ํ•„์š”ํ•œ ์—ด๋งŒ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ I/O ์ž‘์—…์ด ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด NAME ์—ด๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์— ๋ฌธ์ž์—ด ํ˜•์‹ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ํ•„๋“œ๋ณ„๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•œ ๋‹ค์Œ NAME ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์—ด์˜ ๋ชจ๋“  ๊ฐ’์ด ํ•จ๊ป˜ ์ €์žฅ๋˜๋ฏ€๋กœ ์ด๋ฆ„ ์—ด๋กœ ์ง์ ‘ ๋“œ๋ฆด๋‹ค์šดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๋…น์Œ์„ ์Šค์บ”ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์—ด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์—ด์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์กฐํšŒ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ค๊ณ  ์›ํ•˜๋Š” ์—ด๋งŒ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— I/O ์ž‘์—… ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋…ํŠนํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜ ๋‚˜๋ฌด ๋งˆ๋ฃจ๋กœ ์ด ํ˜•์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ. ์ฆ‰, Parquet ํŒŒ์ผ์—์„œ๋Š” ์ค‘์ฒฉ ๊ตฌ์กฐ์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ฝ์ง€ ์•Š๊ณ ๋„ ์ค‘์ฒฉ ํ•„๋“œ๋„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Parquet๋Š” ํŒŒ์‡„ ๋ฐ ์กฐ๋ฆฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
Hadoop์˜ Parquet ํŒŒ์ผ ํ˜•์‹์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ์šฉ์–ด๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ–‰ ๊ทธ๋ฃน (ํ–‰ ๊ทธ๋ฃน): ๋ฐ์ดํ„ฐ๋ฅผ ํ–‰์œผ๋กœ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ˆ˜ํ‰ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ํ–‰ ๊ทธ๋ฃน์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์žˆ๋Š” ๊ฐ ์—ด์˜ ์กฐ๊ฐ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. ๊ธฐ๋‘ฅ ์กฐ๊ฐ (์—ด ์ฒญํฌ): ํŠน์ • ์—ด์˜ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ด ์กฐ๊ฐ์€ ํŠน์ • ํ–‰ ๊ทธ๋ฃน์— ์žˆ์œผ๋ฉฐ ํŒŒ์ผ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  3. ํŽ˜์ด์ง€ (ํŽ˜์ด์ง€): ์—ด ์กฐ๊ฐ์ด ์ฐจ๋ก€๋กœ ์ž‘์„ฑ๋œ ํŽ˜์ด์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์—๋Š” ๊ณตํ†ต ์ œ๋ชฉ์ด ์žˆ์œผ๋ฏ€๋กœ ์ฝ์„ ๋•Œ ๋ถˆํ•„์š”ํ•œ ํŽ˜์ด์ง€๋Š” ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
์—ฌ๊ธฐ ์ œ๋ชฉ์—๋Š” ๋งค์ง ๋„˜๋ฒ„๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. PAR1 ํŒŒ์ผ์„ Parquet ํŒŒ์ผ๋กœ ์‹๋ณ„ํ•˜๋Š” (4๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค.

๋ฐ”๋‹ฅ๊ธ€์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐ ์—ด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์‹œ์ž‘ ์ขŒํ‘œ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ฝ์„ ๋•Œ ๋จผ์ € ํŒŒ์ผ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋“  ์—ด ์กฐ๊ฐ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—ด ๋ถ€๋ถ„์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐํƒ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—๋Š” ํ˜•์‹ ๋ฒ„์ „, ์Šคํ‚ค๋งˆ ๋ฐ ์ถ”๊ฐ€ ํ‚ค-๊ฐ’ ์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธธ์ด(4๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค.
  3. ๋งค์ง๋„˜๋ฒ„ PAR1 (4 ๋ฐ”์ดํŠธ).

ORC ํŒŒ์ผ ํ˜•์‹

์ตœ์ ํ™”๋œ ํ–‰-์—ด ํŒŒ์ผ ํ˜•์‹ (์ตœ์ ํ™”๋œ ํ–‰ ์—ด, ORC)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋งค์šฐ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฉฐ ๋‹ค๋ฅธ ํ˜•์‹์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ณ  ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š” ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ปดํŒฉํŠธํ•œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ORC ํ˜•์‹์˜ ์žฅ์ :

  1. ํ•˜๋‚˜์˜ ํŒŒ์ผ์€ ๊ฐ ์ž‘์—…์˜ ์ถœ๋ ฅ์œผ๋กœ, NameNode(๋„ค์ž„ ๋…ธ๋“œ)์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.
  2. DateTime, XNUMX์ง„์ˆ˜ ๋ฐ ๋ณตํ•ฉ ๋ฐ์ดํ„ฐ ์œ ํ˜•(๊ตฌ์กฐ์ฒด, ๋ชฉ๋ก, ๋งต ๋ฐ ๊ณต์šฉ์ฒด)์„ ํฌํ•จํ•œ Hive ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋กœ ๋‹ค๋ฅธ RecordReader ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์ผํ•œ ํŒŒ์ผ์„ ๋™์‹œ์— ์ฝ์Šต๋‹ˆ๋‹ค.
  4. ๋งˆ์ปค๋ฅผ ์Šค์บ”ํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์„ ๋ถ„ํ• ํ•˜๋Š” ๊ธฐ๋Šฅ.
  5. ํŒŒ์ผ ๋ฐ”๋‹ฅ๊ธ€์˜ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ๊ธฐ/์“ฐ๊ธฐ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ํž™ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ง๋ ฌํ™” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋น…๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ ํ˜•์‹: ๊ฐ„๋žตํ•œ ๊ต์œก ํ”„๋กœ๊ทธ๋žจ
ORC๋Š” ๋ฌธ์ž์—ด ์ปฌ๋ ‰์…˜์„ ๋‹จ์ผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ์ปฌ๋ ‰์…˜ ๋‚ด์—์„œ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋Š” ์—ด ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

ORC ํŒŒ์ผ์€ ์ŠคํŠธ๋ผ์ดํ”„๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ค„ ๊ทธ๋ฃน๊ณผ ํŒŒ์ผ ๋ฐ”๋‹ฅ๊ธ€์— ์ง€์› ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋์— ์žˆ๋Š” Postscript์—๋Š” ์••์ถ• ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์••์ถ•๋œ ๋ฐ”๋‹ฅ๊ธ€์˜ ํฌ๊ธฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ŠคํŠธ๋ผ์ดํ”„ ํฌ๊ธฐ๋Š” 250MB์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฐ ์ŠคํŠธ๋ผ์ดํ”„๋กœ ์ธํ•ด HDFS์—์„œ ์ฝ๋Š” ์ž‘์—…์€ ํฐ ์—ฐ์† ๋ธ”๋ก์—์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋ฐ”๋‹ฅ๊ธ€์—๋Š” ํŒŒ์ผ์˜ ๋ ˆ์ธ ๋ชฉ๋ก, ๋ ˆ์ธ๋‹น ํ–‰ ์ˆ˜, ๊ฐ ์—ด์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์—ด์˜ ๊ฐœ์ˆ˜, ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’ ๋ฐ ํ•ฉ๊ณ„์˜ ๊ฒฐ๊ณผ ๊ฐ’๋„ ์—ฌ๊ธฐ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฝ์˜ ๋ฐ”๋‹ฅ๊ธ€์—๋Š” ์ŠคํŠธ๋ฆผ ์œ„์น˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–‰ ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ๋ฐ์ดํ„ฐ์—๋Š” ๊ฐ ์—ด์˜ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’, ๊ฐ ์—ด์˜ ํ–‰ ์œ„์น˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ORC ์ธ๋ฑ์Šค๋Š” ์ŠคํŠธ๋ผ์ดํ”„ ๋ฐ ํ–‰ ๊ทธ๋ฃน ์„ ํƒ์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ์ฟผ๋ฆฌ ์‘๋‹ต์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํŒŒ์ผ ํ˜•์‹ ๋น„๊ต

Avro์™€ ์ชฝ๋ชจ์ด ์„ธ๊ณต ๋งˆ๋ฃจ

  1. Avro๋Š” ํ–‰ ์ €์žฅ ํ˜•์‹์ธ ๋ฐ˜๋ฉด Parquet๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. Parquet๋Š” ๋ถ„์„ ์ฟผ๋ฆฌ์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ๊ธฐ ์ž‘์—…๊ณผ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ๊ฐ€ ์“ฐ๊ธฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  3. Avro์˜ ์“ฐ๊ธฐ ์ž‘์—…์€ Parquet๋ณด๋‹ค ๋” ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  4. Avro๋Š” ํšŒ๋กœ ์ง„ํ™”๋ฅผ ๋ณด๋‹ค ์„ฑ์ˆ™ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Parquet๋Š” ์Šคํ‚ค๋งˆ ์ถ”๊ฐ€๋งŒ ์ง€์›ํ•˜๋Š” ๋ฐ˜๋ฉด Avro๋Š” ๋‹ค๊ธฐ๋Šฅ ์ง„ํ™”, ์ฆ‰ ์—ด ์ถ”๊ฐ€ ๋˜๋Š” ๋ณ€๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  5. Parquet๋Š” ๋‹ค์ค‘ ์—ด ํ…Œ์ด๋ธ”์—์„œ ์—ด ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Avro๋Š” ๋ชจ๋“  ์—ด์„ ์ฟผ๋ฆฌํ•˜๋Š” ETL ์ž‘์—…์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ORC ๋Œ€ ๋งˆ๋ฃจ

  1. Parquet๋Š” ์ค‘์ฒฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž˜ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ORC๋Š” ์กฐ๊ฑด์ž ํ‘ธ์‹œ๋‹ค์šด์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  3. ORC๋Š” ACID ์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  4. ORC๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž˜ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์ œ์— ๋Œ€ํ•ด ๋” ์ฝ์„ ๋‚ด์šฉ:

  1. ํด๋ผ์šฐ๋“œ์—์„œ์˜ ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„: ๊ธฐ์—…์ด ๋ฐ์ดํ„ฐ ์ง€ํ–ฅ์ ์ด ๋˜๋Š” ๋ฐฉ๋ฒ•.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๊ฒธ์†ํ•œ ๊ฐ€์ด๋“œ.
  3. ๋””์ง€ํ„ธ ํ˜์‹ ์— ๊ด€ํ•œ ์ „๋ณด ์ฑ„๋„.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€