๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Hadoop

[Hadoop]MapReduce1

by DevIseo 2022. 8. 29.

๐Ÿคท‍โ™€๏ธ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด `๋ณ‘๋ ฌ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜`์„ ์ด์šฉํ•˜๋Š” ์ด์œ ๋Š”?

์ ์€ ์ˆ˜์˜ ๊ฐ’ ๋น„์‹ผ ํ•˜์ด ์—”๋“œ(high-end) ๋จธ์‹ ์„ ์ด์šฉํ•˜๋Š” `์Šค์ผ€์ผ-์—…(Scale-Up)`๋ฐฉ์‹์— ๋น„ํ•ด ๋น„๊ต์  ์ €๋ ดํ•œ **๋กœ์šฐ ์—”๋“œ(low-end)๋จธ์‹ ๋“ค์„ ๋Œ€๋Ÿ‰์œผ๋กœ ๋‘๊ณ  ์‚ฌ์šฉํ•˜๋Š” `์Šค์ผ€์ผ-์•„์›ƒ(Scale-Out)` ๋ฐฉ์‹์ด ๋น„์šฉ์ ์œผ๋กœ ๋ณด๋‹ค ํšจ์œจ์ **์ด๊ธฐ ๋•Œ๋ฌธ!

 

๐Ÿคท‍โ™€๏ธ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์™œ ์“ฐ๋Š”๋ฐ?

๊ฐ’ ์‹ผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฑฐ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ(cluster)์—์„œ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ผ€์ผ๋Ÿฌ๋ธ” ๋ณ‘๋ ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ SW ๊ฐœ๋ฐœ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ

 

๐Ÿคท‍โ™€๏ธ๊ทธ๋ ‡๋‹ค๋ฉด ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ด?

  • HDFS(Hadoop DistributedFileSystem)์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋จธ์‹ ์— ๋ถ„์‚ฐํ•ด ์ €์žฅ (๊ฐ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ˆœ์ฐจ์ ์ธ ๋ธ”๋ก์œผ๋กœ ๋ถ„ํ• ํ•ด์„œ ์ €์žฅ)
  • ๊ฐ๊ฐ์˜ ๋ธ”๋ก๋“ค์€ Fault Tolerance๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ณต์‚ฌ๋˜์–ด ์—ฌ๊ธฐ์ €๊ธฐ ์ €์žฅ
    • Fault Toleracne ?
      ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ถ€ํ’ˆ์˜ ์ผ๋ถ€์—์„œ ๊ฒฐํ•จ(Fault) ๋˜๋Š” ๊ณ ์žฅ(Failure)์ด ๋ฐœ์ƒํ•˜์—ฌ๋„ 
      ์ •์ƒ์ ์œผ๋กœ ํ˜น์€ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

 

 

 

๐Ÿคท‍โ™€๏ธ๋งต๋ฆฌ๋“€์Šค์˜ ๋‹จ๊ณ„

๊ฐ๊ฐ์˜ ๋ ˆ์ฝ”๋“œ(record) ๋˜๋Š” ํŠœํ”Œ(tuple)์ด (KEY,VALUE)์Œ์œผ๋กœ ํ‘œํ˜„

๐Ÿ•๋งต๋ฆฌ๋“€์Šค ํŽ˜์ด์ฆˆ(MapReduce Phase)

์œ ์ €๊ฐ€ ์ •์˜ํ•œ ๋งต(map)๊ณผ ๋ฆฌ๋“€์Šค(reduce)๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด

- ๋งต-ํŽ˜์ด์ฆˆ
- ์…”ํ”Œ๋ง-ํŽ˜์ด์ฆˆ
- ๋ฆฌ๋“€์Šค-ํŽ˜์ด์ฆˆ

3๊ฐœ์˜ phase๊ฐ€ ํ•œ ๋ฒˆ ๋˜๋Š” ๋ฐ˜ ๋ณต์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ,

๋งต ํ•จ์ˆ˜์™€ ๋ฆฌ๋“€์Šค ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐœ์˜ (KEY,VALUE) ์Œ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ณ  
์ถœ๋ ฅ์€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ฑฐ๋‚˜, ํ•œ ๊ฐœ์˜ (KEY,VALUE) ์Œ์„ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ (KEY,VALUE) ์Œ์„ ์ถœ๋ ฅ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ => ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋‚˜๋ˆ„์–ด ์ €์žฅ

๋งต-ํŽ˜์ด์ฆˆ ์œ ์ €๊ฐ€ ์ •์˜ํ•œ ๋งต ํ•จ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์— ๋ณ‘๋ ฌ ๋ถ„์‚ฐ์œผ๋กœ ํ˜ธ์ถœ๋˜์–ด ์ˆ˜ํ–‰๋œ ํ›„

๋งต ํ•จ์ˆ˜์—์„œ ์ถœ๋ ฅํ•œ ๊ฒฐ๊ณผ๋“ค์ด (KEY, VALUE)์Œ์œผ๋กœ ํ‘œํ˜„๋˜์–ด

์—ฌ๋Ÿฌ ๋จธ์‹ ์— key์— ๋”ฐ๋ผ ๋žœ๋คํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์ „๋‹ฌ
๊ฐ™์€ key๋ฅผ ๊ฐ€์ง„ (KEY,VALUE) ์Œ์€ ๊ฐ™์€ ๋จธ์‹ ์œผ๋กœ ๋ชจ์ž„



์…”ํ”Œ๋ง-ํŽ˜์ด์ฆˆ=> ๊ฐ ๋จธ์‹ ์—์„œ ์ˆ˜ํ–‰

๊ฐ ๋จธ์‹ ์— ๋ชจ์ธ (KEY,VALUE) ์Œ๋“ค์„ KEY๋ฅผ ์ด์šฉํ•ด ์ •๋ ฌํ•˜๊ณ 
๊ฐ๊ฐ์˜ KEY๋งˆ๋‹ค ๊ทธ KEY๋ฅผ ๊ฐ–๋Š” VALUE๋“ค์„ ๋ณ‘ํ•ฉํ•ด VALUE ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ



๋ฆฌ๋“€์Šค-ํŽ˜์ด์ฆˆ=> ์…”ํ”Œ๋ง-ํŽ˜์ด์ฆˆ์—์„œ ๋งŒ๋“  (KEY,VALUE-LIST)์Œ๋งˆ๋‹ค ํ•œ ๊ฐœ์˜ ๋ฆฌ๋“€์Šค ํ•จ์Šค๊ฐ€ ํ˜ธ์ถœ
์ถœ๋ ฅ์ด ์žˆ๋‹ค๋ฉด (KEY,VALUE) ์Œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ

๐Ÿ• ๋งต ๋ฆฌ๋“€์Šค ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์š”์•ฝ

[X]๋Š” ํ˜•ํƒœ๊ฐ€ X์ธ ๊ฐ’๋“ค์˜ ๋ฆฌ์ŠคํŠธ ์˜๋ฏธ

Map:(KEY,VALUE) -> [(KEY,VALUE)]
Reduce: (KEY,[VALUE]) -> [(KEY,VALUE)]

 

๐Ÿคท‍โ™€๏ธ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š”?

  • ๋ฉ”์ธ(main) ํ•จ์ˆ˜๋ฅผ ํ•œ ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ ๋จธ์‹ (master machine)์—์„œ ์ˆ˜ํ–‰
    • ์ด ๋จธ์‹ ์€ ๋งต ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋“€์Šค ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ํ›„์ฒ˜๋ฆฌ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ!
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋งต ํ•จ์ˆ˜์™€ ๋ฆฌ๋“€์Šค ํ•จ์ˆ˜ ํ•œ ์Œ์œผ๋กœ ์ด๋ค„์ง„ `๋งต-์…”ํ”Œ๋ง-๋ฆฌ๋“€์Šค ํŽ˜์ด์ฆˆ`๋ฅผ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

 

๐Ÿ•๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„ ์›Œํฌ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

  • MapReduce
    • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ˆ˜ํ–‰์„ ๋ถ„์‚ฐ
  • HDFS(Hadoop Distributed File System ; Hadoop ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ)
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ

์ด์™ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ

  • Namenode
    • master ์—ญํ• ์ธ ํ•œ๊ฐœ์˜ ๋„ค์ž„๋…ธ๋“œ
    • ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  • Datanodes
    • slave ์—ญํ• ์ธ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ
    • ์ปดํ“จํ„ฐ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

 

'Hadoop' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Hadoop]MapReduce2  (0) 2022.08.30

๋Œ“๊ธ€