study blog

[Hadoop] ํ•˜๋‘ก์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๋ณธ๋ฌธ

๋น…๋ฐ์ดํ„ฐ/Hadoop

[Hadoop] ํ•˜๋‘ก์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

gyuI 2022. 2. 22. 23:27

๐Ÿ’ก ๋ณ‘๋ ฌ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

Scaling-out is superior to Scaling-up
  • Scale-out : ์•„์ฃผ ๋งŽ์€ ๊ฐ’์‹ผ ์„œ๋ฒ„๋“ค์„ ์ด์šฉ
  • Scale-up : ์ ์€ ์ˆ˜์˜ ๊ฐ’๋น„์‹ผ ์„œ๋ฒ„๋“ค์„ ์ด์šฉ

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ (data-intensive) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„์•ผ์—์„œ๋Š” Scale-out์„ ๋” ์„ ํ˜ธํ•œ๋‹ค. ๊ฐ€๊ฒฉ๊ณผ ์„ฑ๋Šฅ์ด ์„ ํ˜•์œผ๋กœ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‘ ๋ฐฐ์˜ ์„ฑ๋Šฅ์˜ ํ”„๋กœ์„ธ์„œ ํ•œ ๊ฐœ๋ฅผ ๊ฐ€์ง„ ์ปดํ“จํ„ฐ์˜ ๊ฐ€๊ฒฉ์ด ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์„œ ํ•œ ๊ฐœ๋ฅผ ๊ฐ€์ง„ ์ปดํ“จํ„ฐ ๊ฐ€๊ฒฉ์˜ ๋‘๋ฐฐ ๋ณด๋‹ค ๋น„์‹ธ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ ฌ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.


๐Ÿ’ก ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ 

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

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ํ”„๋กœ์„ธ์‹ฑ์—์„œ๋Š” ํ•œ๋Œ€์˜ ์ปดํ“จํ„ฐ์˜ ๋Šฅ๋ ฅ์œผ๋กœ๋Š” ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋งต๋ฆฌ๋“€์Šค๋Š” ์ด๋Ÿฌํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋•๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ Map๋‹จ๊ณ„์™€ Reduce๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋จผ์ € Map๋‹จ๊ณ„์—์„œ๋Š” ํฉ์–ด์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ key, value๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด key๋Š” ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์ธ์ง€, value๋Š” ๊ฐ’์„ ์ถ”์ถœํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  Reduce๋‹จ๊ณ„๋Š” Map๋‹จ๊ณ„์˜ key๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•„ํ„ฐ๋ง ๋ฐ ์ •๋ ฌํ•œ๋‹ค.

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

  • Main ํ•จ์ˆ˜
  • Map ํ•จ์ˆ˜ (key1, val1) -> [(key2, val2)] (๋ฆฌ์ŠคํŠธ)
  • Reduce ํ•จ์ˆ˜ (key2, [val2]) -> [(key3, val3)]

main ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ ๋จธ์‹ ์—์„œ ์ˆ˜ํ–‰๋œ๋‹ค. ์ด ๋จธ์‹ ์€ map ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฑฐ๋‚˜ reduce ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ›„์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ์ปดํ“จํŒ…์€ ์œ ์ €๊ฐ€ ์ •์˜ํ•œ map, reduce ํ•จ์ˆ˜ ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋งต๋ฆฌ๋“€์Šค ํŽ˜์ด์ฆˆ๋ฅผ ํ•œ ๋ฒˆ, ํ˜น์€ ์—ฌ๋Ÿฌ๋ฒˆ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ“Œ MapReduce Phase

1. ๋งต (Map) ํŽ˜์ด์ฆˆ

  • ๊ฐ€์žฅ ๋จผ์ € ์ˆ˜ํ–‰๋˜๋ฉฐ ๋ฐ์ดํ„ฐ์˜ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์— ๋ณ‘๋ ฌ ๋ถ„์‚ฐ์œผ๋กœ ํ˜ธ์ถœ๋˜์–ด ์ˆ˜ํ–‰๋œ๋‹ค.
  • ๊ฐ ๋จธ์‹ ๋งˆ๋‹ค ์ˆ˜ํ–‰๋˜๋Š” mapper๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํ•œ ์ค„๋งˆ๋‹ค map ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • (key, value) ์Œ ํ˜•ํƒœ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋‚˜๋ˆ„์–ด ๋ณด๋‚ด๋ฉฐ ๊ฐ™์€ key๋ฅผ ๊ฐ€์ง„ ์Œ์€ ๊ฐ™์€ ๋จธ์‹ ์œผ๋กœ ๋ณด๋‚ด์ง„๋‹ค.

2. ์…”ํ”Œ๋ง (Shuffling) ํŽ˜์ด์ฆˆ

  • ๋ชจ๋“  ๋จธ์‹ ์—์„œ map ํŽ˜์ด์ฆˆ๊ฐ€ ๋‹ค ๋๋‚˜๋ฉด ์‹œ์ž‘๋œ๋‹ค.
  • map ํŽ˜์ด์ฆˆ์—์„œ ๊ฐ๊ฐ์˜ ๋จธ์‹ ์œผ๋กœ ๋ณด๋‚ด์ง„ (key, value) ์Œ์„ key๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ , ๊ฐ™์€ key๋ฅผ ๊ฐ€์ง„ value-list๋ฅผ ๋งŒ๋“ ๋‹ค.
  • value-list๋ฅผ (key, value-list) ํ˜•ํƒœ๋กœ key์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋ถ„์‚ฐํ•ด์„œ ๋ณด๋‚ธ๋‹ค.

3. ๋ฆฌ๋“€์Šค (Reduce) ํŽ˜์ด์ฆˆ

  • ๋ชจ๋“  ๋จธ์‹ ์—์„œ shuffling ํŽ˜์ด์ฆˆ๊ฐ€ ๋‹ค ๋๋‚˜๋ฉด ๊ฐ ๋จธ์‹ ๋งˆ๋‹ค reduce ํŽ˜์ด์ฆˆ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.
  • ๊ฐ๊ฐ์˜ ๋จธ์‹ ์—์„œ ํ•ด๋‹น ๋จธ์‹ ์œผ๋กœ ๋ณด๋‚ด์ง„ (key, value-list) ์Œ ๋งˆ๋‹ค reduce ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ ํ•˜๋‚˜์˜ reduce ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์Œ (key, value-list) ์Œ์— reduce ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.
  • ์ปด๋ฐ”์ธ (Combine) ํ•จ์ˆ˜
    • reduce ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•œ ํ•จ์ˆ˜๋กœ, ๊ฐ ๋จธ์‹ ์—์„œ map ํŽ˜์ด์ฆˆ์—์„œ map ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ ์…”ํ”Œ๋ง ํŽ˜์ด์ฆˆ์™€ reduce ํŽ˜์ด์ฆˆ์˜ ๋น„์šฉ์„ ์ค„์—ฌ์ฃผ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ˜ ํ•˜๋‘ก ( Hadoop )

  • Apache ํ”„๋กœ์ ํŠธ์˜ ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์˜คํ”ˆ ์†Œ์Šค
  • ํ•˜๋‘ก ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ (Hadoop Distributed File System- HDFS)
    • ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ฒœ๋Œ€์˜ ๊ฐ’ ์‹ผ ์ปดํ“จํ„ฐ์— ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„์‚ฐ์‹œ์ผœ ์ €์žฅ์„ ํ•œ๋‹ค. ๊ฐ ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ˆœ์ฐจ์ ์ธ ๋ธ”๋ก์œผ๋กœ ์ €์žฅํ•œ๋‹ค. 
    • ํ•œ ํŒŒ์ผ์˜ ๊ฐ๊ฐ์˜ ๋ธ”๋ก์€ fault tolerance์„ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ณต์‚ฌ๋˜์–ด ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ์ €์žฅ๋œ๋‹ค.
    • fault tolerance : ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ถ€ํ’ˆ์˜ ์ผ๋ถ€์—์„œ ๊ฒฐํ•จ์ด ๋ฐœ์ƒํ•˜์—ฌ๋„ ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

๐Ÿ“Œ ๊ตฌ์„ฑ์š”์†Œ

  • MapReduce : ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ˆ˜ํ–‰์„ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ์—ญํ• 
  • Hadoop Distributed File System : ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ์—ญํ• 
  • ํ•˜๋‚˜์˜ Namenode, ์—ฌ๋Ÿฌ ๊ฐœ์˜ Datanode
    • Namenode (master) : ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ์ผ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
    • Datanode (slaves) : ์ปดํ“จํ„ฐ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
Comments