CodeGym/Java Course/All lectures for KO purposes/๋น…๋ฐ์ดํ„ฐ: ๋งต๋ฆฌ๋“€์Šค

๋น…๋ฐ์ดํ„ฐ: ๋งต๋ฆฌ๋“€์Šค

์‚ฌ์šฉ ๊ฐ€๋Šฅ

3.1 ๋น…๋ฐ์ดํ„ฐ๋ผ๋Š” ์šฉ์–ด์˜ ์ถœํ˜„ ์—ฐํ˜

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

๋™์‹œ์— ๊ฒŒ์œผ๋ฅธ ์‚ฌ๋žŒ ๋งŒ์ด ์ง€๊ธˆ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž๊ฐ€ ์ด ์šฉ์–ด๋ฅผ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋น…๋ฐ์ดํ„ฐ๋ž€ ๊ณผ์—ฐ ๋ฌด์—‡์ผ๊นŒ์š”? ๋ฌธ์ œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ์ˆ ํ•˜๊ณ  ๋ถ€๊ฐ์‹œํ‚ค๊ธฐ๋กœ ํ•˜์˜€์œผ๋ฏ€๋กœ ๊ฐœ๋… ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋‚ด ์—ฐ์Šต์—์„œ ๋‚˜๋Š” ๋‹ค๋ฅธ ์ •์˜๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.

  • ๋น…๋ฐ์ดํ„ฐ๋Š” 100GB ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ(500GB, 1TB ๋“ฑ ์›ํ•˜๋Š” ๋Œ€๋กœ)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ๋น… ๋ฐ์ดํ„ฐ๋Š” Excel์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
  • ๋น… ๋ฐ์ดํ„ฐ๋Š” ๋‹จ์ผ ์ปดํ“จํ„ฐ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ฌ์ง€์–ด ์ด๊ฒƒ๋“ค:

  • ๋น… ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
  • ๋น… ๋ฐ์ดํ„ฐ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋งˆ์ผ€ํ„ฐ๊ฐ€ ๋ฐœ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

Wikipedia์˜ ์ •์˜๋ฅผ ๊ณ ์ˆ˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ๋น… ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ ์–‘์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์ •๋ณด์˜ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ž‘์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ(์˜ˆ: ์ด ๊ฐ•์˜ ๋‚ด์šฉ)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ(์˜ˆ: ์ธํ„ฐ๋„ท์˜ ๋ชจ๋“  ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ )์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋น… ๋ฐ์ดํ„ฐ ๊ธฐ์ˆ ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

  • ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉ์ž ํ–‰๋™ ๋กœ๊ทธ
  • ์šด์†ก ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ์ž๋™์ฐจ์˜ GPS ์‹ ํ˜ธ
  • Large Hadron Collider์˜ ์„ผ์„œ์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ
  • ๋Ÿฌ์‹œ์•„ ์ฃผ๋ฆฝ ๋„์„œ๊ด€์˜ ๋””์ง€ํ„ธํ™”๋œ ์ฑ…
  • ๋ชจ๋“  ์€ํ–‰ ๊ณ ๊ฐ์˜ ๊ฑฐ๋ž˜์— ๋Œ€ํ•œ ์ •๋ณด
  • ๋Œ€ํ˜• ์†Œ๋งค ์ฒด์ธ ๋“ฑ์˜ ๋ชจ๋“  ๊ตฌ๋งค์— ๋Œ€ํ•œ ์ •๋ณด

๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ์ˆ˜๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ˆ˜์š”๊ฐ€ ์ ์  ๋” ๋งŽ์•„์ง€๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

3.2 ๋น…๋ฐ์ดํ„ฐ ์›์น™

๋น… ๋ฐ์ดํ„ฐ์˜ ์ •์˜์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ์ž‘์—…์˜ ๊ธฐ๋ณธ ์›์น™์„ ๊ณต์‹ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ. ์ž„์˜๋กœ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์–‘์ด 2๋ฐฐ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ฒ  ์–‘์ด 2๋ฐฐ ์ฆ๊ฐ€ํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๊ณ„์† ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

3.3 ๋งต๋ฆฌ๋“€์Šค

MapReduce ๋Š” ์ปดํ“จํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Google์—์„œ ์ œ์•ˆํ•œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. MapReduce๋Š” ๋‹ค์Œ ๊ทธ๋ฆผ์— ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

MapReduce๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Š” 3๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

1. ๋งต ์Šคํ…Œ์ด์ง€ . ์ด ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ map() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์˜ ์ž‘์—…์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๊ธฐ๋Šฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋งคํ•‘ ์ž‘์—…๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž…๋ ฅ ๋ ˆ์ฝ”๋“œ์— ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ์ž…๋ ฅ ๋ ˆ์ฝ”๋“œ์— ์ ์šฉ๋œ map() ํ•จ์ˆ˜๋Š” ๋งŽ์€ ํ‚ค-๊ฐ’ ์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • - ์ฆ‰, ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ํ‚ค-๊ฐ’ ์Œ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค์™€ ๊ฐ’์— ๋ฌด์—‡์ด ๋“ค์–ด๊ฐˆ์ง€๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์ง€๋งŒ ํ‚ค๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์— ํ•˜๋‚˜์˜ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋Š” ์ถ•์†Œ ๊ธฐ๋Šฅ์˜ ํ•œ ์ธ์Šคํ„ด์Šค์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

2. ์Šคํ…Œ์ด์ง€ ์…”ํ”Œ. ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ๋งต ๊ธฐ๋Šฅ์˜ ์ถœ๋ ฅ์€ "๋น„๋‹"๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋นˆ์€ ๋งต ๋‹จ๊ณ„์˜ ํ•˜๋‚˜์˜ ์ถœ๋ ฅ ํ‚ค์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐ”์Šค์ผ“์€ reduce๋ฅผ ์œ„ํ•œ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3. ์Šคํ…Œ์ด์ง€ ์ถ•์†Œ. ์…”ํ”Œ ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ ๊ฐ’์„ ๊ฐ€์ง„ ๊ฐ "๋ฐ”๊ตฌ๋‹ˆ"๋Š” reduce() ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค.

์ถ•์†Œ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•˜๋ฉฐ ๋‹จ์ผ "๋ฐ”๊ตฌ๋‹ˆ"์— ๋Œ€ํ•œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค . reduce() ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๋ชจ๋“  ๊ฐ’์˜ ์ง‘ํ•ฉ์€ MapReduce ์ž‘์—…์˜ ์ตœ์ข… ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

MapReduce์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ •๋ณด:

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

3.4 ๋งต๋ฆฌ๋“€์Šค๋กœ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ณผ์ œ์˜ ์˜ˆ

๋‹จ์–ด ์ˆ˜

๊ณ ์ „์ ์ธ ์ž‘์—…์ธ ๋‹จ์–ด ์ˆ˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต์‹ํ™”๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋ฌธ์„œ ๋ชจ์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋ง๋ญ‰์น˜์—์„œ ์ ์–ด๋„ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ ๋‹จ์–ด์— ๋Œ€ํ•ด ๋ง๋ญ‰์น˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…:

๋ฐฉ๋Œ€ํ•œ ๋ฌธ์„œ ๋ชจ์Œ์ด ์žˆ์œผ๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๋ฌธ์„œ๋ฅผ MapRreduce ์ž‘์—…์— ๋Œ€ํ•œ ํ•˜๋‚˜์˜ ์ž…๋ ฅ ๋ ˆ์ฝ”๋“œ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. MapReduce์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋งŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŒŒ์ด์ฌ๊ณผ ์œ ์‚ฌํ•œ ์˜์‚ฌ ์ฝ”๋“œ ์‚ฌ์šฉ).

def map(doc): 
for word in doc: 
yield word, 1 
def reduce(word, values): 
yield word, sum(values) 

map ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ๋ฌธ์„œ๋ฅผ ์Œ(๋‹จ์–ด, 1) ์„ธํŠธ๋กœ ๋ฐ”๊พธ๊ณ , ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ํˆฌ๋ช…ํ•˜๊ฒŒ ์…”ํ”Œํ•˜์—ฌ ์Œ(๋‹จ์–ด, [1,1,1,1,1,1])์œผ๋กœ ๋ฐ”๊พธ๊ณ , ์ด๋“ค์˜ ํ•ฉ๊ณ„๋ฅผ ์ค„์ด๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์–ด์— ๋Œ€ํ•œ ์ตœ์ข… ๋‹ต๋ณ€ .

๊ด‘๊ณ  ์‹œ์Šคํ…œ ๋กœ๊ทธ ์ฒ˜๋ฆฌ

๋‘ ๋ฒˆ์งธ ์˜ˆ๋Š” Data-Centric Alliance์˜ ์‹ค์ œ ์‚ฌ๋ก€์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž‘์—…: ๋‹ค์Œ ํ˜•์‹์˜ ๊ด‘๊ณ  ์‹œ์Šคํ…œ์˜ csv-log๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p> 
 
11111,RU,Moscow,2,4,0.3 
22222,RU,Voronezh,2,3,0.2 
13413,UA,Kyiv,4,11,0.7 
โ€ฆ 

๋Ÿฌ์‹œ์•„ ๋„์‹œ์—์„œ ๊ด‘๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ‰๊ท  ๋น„์šฉ์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…:

def map(record): 
user_id, country, city, campaign_id, creative_id, payment = record.split(",") 
payment=float(payment) 
if country == "RU": 
yield city, payment 
def reduce(city, payments): 
yield city, sum(payments)/len(payments) 

์ง€๋„ ๊ธฐ๋Šฅ์€ ์ด ํ•ญ๋ชฉ์ด ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•„์š”ํ•œ ์ •๋ณด(๋„์‹œ ๋ฐ ๊ฒฐ์ œ ๊ธˆ์•ก)๋งŒ ๋‚จ๊น๋‹ˆ๋‹ค. reduce ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ๋„์‹œ์˜ ๋ชจ๋“  ์ง€๋ถˆ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง„ ๋„์‹œ์— ๋Œ€ํ•œ ์ตœ์ข… ๋‹ต์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค