Introduction to Hadoop - neozeus79/study GitHub Wiki

๋น…๋ฐ์ดํ„ฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • ๋น…๋ฐ์ดํ„ฐ์˜ 3๋Œ€ ์š”์†Œ https://t1.daumcdn.net/cfile/tistory/125FFF3A50A709C41C
    • ํฌ๊ธฐ(volumn)
      • ์ˆ˜์‹ญ ํ…Œ๋ผ๋ฐ”์ดํŠธ, ํŽ˜ํƒ€ ๋ฐ”์ดํŠธ
    • ์†๋„(velocity)
      • ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    • ๋‹ค์–‘์„ฑ(variety)
      • ์ •ํ˜• (structured)
      • ๋ฐ˜์ •ํ˜• (semi-structured)
      • ๋น„์ •ํ˜• (unstructured)

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

  • google์ด ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ(Google File System, MapReduce)์„ ๋”๊ทธ์ปคํŒ…์ด ๊ตฌํ˜„ํ•œ ๊ฒฐ๊ณผ๋ฌผ
  • ์˜คํ”ˆ์†Œ์Šค ๊ฒ€์ƒ‰์—”์ง„ ๋„ˆ์น˜(nutch)์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘
  • 2008๋…„ ์•„ํŒŒ์น˜ ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ๋กœ ์Šน๊ฒฉ
  • ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ HDFS(Hadoop Distributed File System)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ธ MapReduce๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

์™œ ํ•˜๋‘ก์ธ๊ฐ€?

  • Hadoop vs. RDBMS

    • Hadoop
      • ๋ผ์ด์„ผ์Šค ๋น„์šฉ: ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—ฌ์„œ ์†Œํ”„ํŠธ์›จ์–ด ๋ผ์ด์„ผ์Šค ๋น„์šฉ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์—†์Œ.
      • scale-out
      • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹: ์—ฌ๋Ÿฌ๋Œ€์˜ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๊ฐ ์„œ๋ฒ„์—์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
      • ์žฅ์ : ์ €๋ ดํ•œ ๊ตฌ์ถ• ๋น„์šฉ, ๋น„์šฉ ๋Œ€๋น„ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์žฅ์• ๋ฅผ ๋Œ€๋น„ํ•œ ํŠน์„ฑ(๋ฐ์ดํ„ฐ ๋ณต์ œ๋ณธ ์ €์žฅ์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด๋‚˜ ์žฅ์•  ๋ฐœ์ƒ ๋•Œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๊ฐ€๋Šฅ)
    • RDBMS(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
      • ์ •ํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ €์žฅํ•˜๋Š”๋ฐ ์šฉ์ดํ•˜์ง€๋งŒ, ์›น๋กœ๊ทธ์™€ ๊ฐ™์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋“ค์€ RDBMS์— ์ ์žฌํ•˜๊ธฐ์—๋Š” ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํผ
      • ์ƒ์šฉ RDBMS ๊ฐ€ ์„ค์น˜๋œ ๊ณณ์€ ๋Œ€๋ถ€๋ถ„ ๊ณ ๊ฐ€์˜ ์žฅ๋น„์—ฌ์„œ ๋ฌด์ž‘์ • ์žฅ๋น„๋ฅผ ๋Š˜๋ฆฌ๊ธฐ์—๋Š” ๋น„์šฉ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ
      • ๋ผ์ด์„ผ์Šค ๋น„์šฉ: ๋น„์šฉ ๋ถ€๋‹ด ์žˆ์Œ.
      • scale-up
      • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹: ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ
  • Haooop Ecosystem

    • hadoop์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์„œ๋ธŒ ํ”„๋กœ์ ํŠธ ์ œ๊ณต
      • ์ฝ”๋””๋„ค์ดํ„ฐ: zookeeper
      • ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ: yarn, mesos
      • ๋ฐ์ดํ„ฐ ์ €์žฅ: Hbase, Mesos
      • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: Chuckwa, Flume, Scribe, Sqoop, Hiho, Kafka
      • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: Pig, Mahout, Spark, Impala, Presto, Hive, Tajo
      • ์›Œํฌํ”Œ๋กœ์šฐ ๊ด€๋ฆฌ: oozie. Airflow, Azkaban, Nifi
      • ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: Zepplin
      • ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”: Avro, Thrift

ํ•˜๋‘ก์— ๋Œ€ํ•œ ์˜คํ•ด

  • RDBMS๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค?
    • ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ๊ด€๊ณ„
      • ๋ถ„์„์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์‹œ ๊ฑฐ์น˜๋Š” ETL๊ณผ์ •์— ๋„์›€์„ ์คŒ
    • ํ•˜๋‘ก์€ ํŠธ๋žœ์ ์…˜์ด๋‚˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋ฐ˜๋“œ์‹œ ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋Š” ์‹œ์Šคํ…œ(์ œํ’ˆ ๊ตฌ๋งค, ์ธํ„ฐ๋„ท๋ฑ…ํ‚น ๋“ฑ...)์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.
      • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์ ์…˜ ๋ณ„๋กœ ๋ฌด๊ฒฐ์„ฑ(์ผ๊ด€์„ฑ)์„ ๋ณด์žฅํ•˜๋Š” RDBMS์—์„œ ์ฒ˜๋ฆฌ
      • ๋ฐฐ์น˜์„ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ hadoop์—์„œ ์ฒ˜๋ฆฌ
  • ํ•˜๋‘ก์€ NoSQL์ด๋‹ค?
    • RDBMS๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, NoSQL๋„ ์•„๋‹ˆ๋‹ค.
      • ํ•˜๋‘ก์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜.
    • NoSQL?
      • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด๋‚˜ SQL๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ(ํ˜น์€ ์ €์žฅ์†Œ)
      • No SQL or Not Only SQL
      • RDBMS๊ฐ€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•˜์ง€ ์•Š์•„์„œ ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ฒƒ
      • RDBMS๊ฐ€ ์—”ํ‹ฐํ‹ฐ๊ฐ„์˜ ๊ด€๊ณ„์— ์ค‘์ ์„ ๋‘๊ณ  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋ฉด,
      • NoSQL์€ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง. ์ธ๋ฑ์Šค์™€ ๋ฐ์ดํ„ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋ณ„๋„๋กœ ์šด์˜๋จ. ์กฐ์ธ์ด ์—†๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ๋œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•จ(RBBMS๋Š” row ๋‹จ์œ„), ์ƒค๋”ฉ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด ๋‹ค๋ฅธ ์„œ๋ฒ„์— ๋‚˜๋ˆ„์–ด ์ €์žฅ

Hadoop1 ๊ตฌ์„ฑ ์š”์†Œ

HDFS (Hadoop Distributed File System)

  • ํŠน์ง•
    • ์žฅ์•  ๋ณต๊ตฌ
      • ๋ฐ์ดํ„ฐ ์ €์žฅ์‹œ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ๋ณต์ œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์œ ์‹ค์„ ๋ฐฉ์ง€
      • ๋ถ„์‚ฐ ์„œ๋ฒ„๊ฐ„์— ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜์—ฌ ๋น ๋ฅธ ์‹œ๊ฐ„์— ์žฅ์•  ์ธ์ง€(์˜ค๋ฅ˜์‹œ ๋ถ„์‚ฐ ์„œ๋ฒ„๊ฐ„ ๋„คํŠธ์›Œํฌ ์ฐจ๋‹จ)
    • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ
      • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋น ๋ฅธ ์‹œ๊ฐ„๋‚ด์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๋™์ผํ•œ ์‹œ๊ฐ„์— ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•จ
      • HDFS๋Š” ๋žœ๋ค ์ ‘๊ทผ ๋ฐฉ์‹(์ž„์˜์˜ ์œ„์น˜์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ์‹) ๋Œ€์‹  ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ํ•˜๋„๋ก ์„ค๊ณ„
    • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ €์žฅ
      • ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด GB, TB ์ด์ƒ์˜ ํฌ๊ธฐ์ผ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ถ„์‚ฐ ์ €์žฅํ•˜์—ฌ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„ ๋จ.
    • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ
      • ํ•œ๋ฒˆ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ • ๋ถˆ๊ฐ€ (2.0 ์•ŒํŒŒ ๋ฒ„์ „ ๋ถ€ํ„ฐ๋Š” ์ €์žฅ๋œ ํŒŒ์ผ์— append ๊ฐ€๋Šฅ)
      • ํŒŒ์ผ ์ด๋™, ๋ณต์‚ฌ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ œ๊ณต
  • HDFS ์•„ํ‚คํ…์ณ
    • ๋ธ”๋ก ๊ตฌ์กฐ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ
      • 64MB์˜ ๋ธ”๋ก(chunk)์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ถ„์‚ฐ๋œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋‚˜๋ˆ„์–ด์„œ ์ €์žฅ (hadoop2 = 128mb)
      • ์ฐธ๊ณ ) 64mb ์ด์œ ? (์ฐธ๊ณ . ์ผ๋ฐ˜ ๋””์Šคํฌ ๋ธ”๋ก ํฌ๊ธฐ = 4kb)
        • ๋””์Šคํฌ seek time ๊ฐ์†Œ
          • ๋””์Šคํฌ ํƒ์ƒ‰ ์‹œ๊ฐ„์„ ๋””์Šคํฌ ์ „์†ก ๋Œ€์—ญํญ์˜ 1% ์ •๋„๋กœ ๋˜๋„๋ก ๊ตฌ์„ฑ
            • ๋””์Šคํฌ ํƒ์ƒ‰ ์‹œ๊ฐ„ = ๋ฐ์ดํ„ฐ ์œ„์น˜ ์ฐพ๋Š” ์‹œ๊ฐ„(seek time) + ๋ฐ์ดํ„ฐ ์„นํ„ฐ์— ๋„๋‹ฌํ•˜๋Š” ์‹œ๊ฐ„ (search time)
            • ์ผ๋ฐ˜์ ์ธ seek time = 10ms, ๋””์Šคํฌ ์ „์†ก ๋Œ€์—ญํญ = 100mb/s
        • ๋„ค์ž„๋…ธ๋“œ๊ฐ€ ์œ ์ง€ํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ ๊ฐ์†Œ
          • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ = ๋ธ”๋ก์œ„์น˜, ํŒŒ์ผ๋ช…, ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ, ๊ถŒํ•œ ์ •๋ณด ๋“ฑ..
          • ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋‹ค ๋ณด๋‹ˆ ์ œํ•œ๋œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์—์„œ ๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒํ•˜์—ฌ ๋ธ”๋ก์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋จ
        • ํด๋ผ์ด์–ธํŠธ์™€ ๋„ค์ž„๋…ธ๋“œ์˜ ํ†ต์‹  ๊ฐ์†Œ

  • NameNode (master)
    • ๊ธฐ๋Šฅ
      • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
        • ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€(ํŒŒ์ผ๋ช…, ๋””๋ ‰ํ† ๋ฆฌ, ํฌ๊ธฐ, ๊ถŒํ•œ) + ํŒŒ์ผ ๋ธ”๋ก ๋งตํ•‘ ์ •๋ณด
        • ๋น ๋ฅธ ์‘๋‹ต์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜์—ฌ ๊ด€๋ฆฌ
      • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง
        • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๊ฐ€ ์ „์†กํ•˜๋Š” heartbeat๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์ƒํƒœ, ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง
        • ์ผ์ •๊ธฐ๊ฐ„ heartbeat๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์žฅ์•  ๋ฐœ์ƒ ์„œ๋ฒ„๋กœ ํŒ๋‹จ
      • ๋ธ”๋ก ๊ด€๋ฆฌ
        • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์šฉ๋Ÿ‰์ด ๋ถ€์กฑํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ๋ธ”๋ก์„ ์‹ ๊ทœ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์— ๋ณต์ œํ•˜์—ฌ ๋ธ”๋Ÿญ ๋ณต์ œ์ˆ˜๋ฅผ ๊ด€๋ฆฌ ํ•จ.
      • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ ‘์ˆ˜
        • HDFS์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋„ค์ž„๋…ธ๋“œ์— ๋จผ์ € ์ ‘์†
        • ์กฐํšŒ์‹œ ๋ธ”๋ก์˜ ์œ„์น˜ ์ •๋ณด ๋ฐ˜ํ™˜, ์ €์žฅ์‹œ ๊ธฐ์กด ํŒŒ์ผ ์ €์žฅ ์—ฌ๋ถ€์™€ ๊ถŒํ•œ ํ™•์ธ ๊ฑฐ์ณ์„œ ์Šน์ธ
  • DataNode (slave)
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ HDFS์— ์ €์žฅํ•˜๋Š” ํŒŒ์ผ์„ ๋กœ์ปฌ ๋””์Šคํฌ์— ์œ ์ง€
      • ์ €์žฅ ํŒŒ์ผ ์ข…๋ฅ˜: ์‹ค์ œ ๋ฐ์ดํ„ฐ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์ฒดํฌ์„ฌ, ํŒŒ์ผ ์ƒ์„ฑ์ผ์ž ๋“ฑ)
    • ๋„ค์ž„๋…ธ๋“œ์—๊ฒŒ 3์ดˆ๋งˆ๋‹ค Heartbeat ๋ฉ”์„ธ์ง€ ์ „์†ก(๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์ƒํƒœ ์ •๋ณด + ์ €์žฅ๋œ ๋ธ”๋ก ๋ชฉ๋ก)

MapReduce

  • Mapreduce๋ž€?

    • HDFS์— ์ €์žฅ๋œ ํŒŒ์ผ์„ ๋ถ„์‚ฐ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
      • ๊ฐœ๋ฐœ์ž: mapreduce ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋ธ์— ๋งž๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„
      • Mapreduce Framework: ๋ฐ์ดํ„ฐ ์ „์†ก, ๋ถ„์‚ฐ์ฒ˜๋ฆฌ, ๋‚ด๊ณ ์žฅ์„ฑ(fault tolerance)๋“ฑ์˜ ๋ณต์žกํ•œ ๋ถ€๋ถ„ ์ž๋™ ์ฒ˜๋ฆฌ
  • MapReduce ์•„ํ‚คํ…์ณ

    • Client
      • ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•œ MapReduce ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•˜๋‘ก์—์„œ ์ œ๊ณตํ•˜๋Š” ๋งต๋ฆฌ๋“€์Šค API ์˜๋ฏธ
    • JobTracker
      • client๊ฐ€ ํ•˜๋‘ก์œผ๋กœ ์‹คํ–‰์„ ์š”์ฒญํ•˜๋Š” ๋งต๋ฆฌ๋“€์Šค ํ”„๋กœ๊ทธ๋žจ์„ Job์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ
      • hadoop cluster์— ๋“ฑ๋ก๋œ ์ „์ฒด ์žก์˜ ์Šค์ผ€์ฅด์„ ๊ด€๋ฆฌ. ๋ชจ๋‹ˆํ„ฐ๋ง
      • ํ•˜๋‘ก ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์—์„œ ํ•˜๋‚˜์˜ JobTrancker๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ, ๋ณดํ†ต NameNode ์„œ๋ฒ„์—์„œ ์‹คํ–‰
    • TaskTracker
      • client๊ฐ€ ์š”์ฒญํ•œ MRํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ , Hadoop์˜ DataNode ์„œ๋ฒ„์—์„œ ์‹คํ–‰
    • ๋™์ž‘
      1. ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด Job ์š”์ฒญ ํ•˜๋ฉด, ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ Map, Reduce ์‹คํ–‰ ๊ฐœ์ˆ˜(slot ์ˆ˜) ๊ณ„์‚ฐ
      2. ์–ด๋–ค TaskTracker์—์„œ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •
      3. TaskTracker์— Job ํ• ๋‹น
      4. TaskTracker๋Š” JobTracker์˜ ์ž‘์—… ์ˆ˜ํ–‰ ์š”์ฒญ์„ ๋ฐ›์•„ ์š”์ฒญํ•œ slot๊ฐœ์ˆ˜ ๋งŒํผ Task ์ƒ์„ฑํ•˜๊ณ  ์‹ ๊ทœ JVM ๊ตฌ๋™ํ•ด์„œ MRํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
      5. JobTracker์™€ TaskTracker๋Š” HeartBeat ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ†ตํ•ด Task์˜ ์ƒํƒœ ์™€ ์ž‘์—… ์‹คํ–‰ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ
      6. TaskTracker ์žฅ์•  ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ TaskTracker๋ฅผ ์ฐพ์•„์„œ ์žฌ์‹คํ–‰
  • MapReduce DataFlow

    • Map ๋‹จ๊ณ„: ์ž…๋ ฅ ํŒŒ์ผ์„ ํ•œ์ค„ ์”ฉ ์ฝ์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•(Transformation)
      1. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ํฌ๊ธฐ๋กœ ๋ถ„๋ฆฌ(input-split)
      • ์ €์žฅ๋œ ๋ธ”๋ก์„ ๋‹ค์‹œ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜(๊ฐ€์ƒ๋ถ„๋ฆฌ)
      1. input-split์€ Map task์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ
      2. MapTask๋Š” input-split์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ๋งตํ•จ์ˆ˜ ์‹คํ–‰
      3. MapTask ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋Š” TaskTracker๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋กœ์ปฌ ๋””์Šคํฌ์— ์ €์žฅ๋จ.
      • ์ถœ๋ ฅ์‹œ ์ถœ๋ ฅํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
      • HDFS์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋กœ์ปฌ ๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” ์ค‘๊ฐ„๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜๊ตฌ ๋ณด๊ด€ํ•  ํ•„์š” ์—†์–ด์„œ ์ด๋ฉฐ, ์ž‘์—…์ด ์™„๋ฃŒ ๋˜๋ฉด ์‚ญ์ œ๋จ
    • Suffle ๋‹จ๊ณ„ : MapTask์˜ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ReduceTask์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •
      1. ํŒŒํ‹ฐ์…”๋„ˆ๊ฐ€ ๋งต ์ถœ๋ ฅ๋ ˆ์ฝ”๋“œ์˜ ์ถœ๋ ฅํ‚ค ํ•ด์‹œ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.(default: hash(key) % reduce ๊ฐœ์ˆ˜)
      • ๊ฐ ํ•ด์‰ฌ๊ฐ’์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์†ํ•˜๋Š” ํŒŒํ‹ฐ์…˜ ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ
      • ํŒŒํ‹ฐ์…˜์€ ์‹คํ–‰ํ•  ๋ฆฌ๋“€์Šค ๊ฐœ์ˆ˜๋งŒํผ ์ƒ์„ฑ
      1. ํŒŒํ‹ฐ์…”๋‹๋œ Map ์ถœ๋ ฅ๋ฐ์ดํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ReduceTask์— ์ „๋‹ฌ
      • ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋ชจ์ผ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐํ–ˆ๋‹ค๊ฐ€ ๋ชจ๋‘ ๋ชจ์ด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๊ณ  ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ๋ณ‘ํ•ฉ
      1. ReduceTask๋Š” ๋ณ‘ํ•ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์ฝ์Œ
    • Reduce ๋‹จ๊ณ„: ๋งต์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ (Aggregation)ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ์ถœ๋ ฅ ํŒŒ์ผ ์ƒ์„ฑ
      1. ReduceTask๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ Reduceํ•จ์ˆ˜๋ฅผ ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์‹คํ–‰
      2. ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋Š” Reduce ๊ฐœ์ˆ˜๋งŒํผ ํŒŒ์ผ ์ƒ์„ฑ๋˜์–ด HDFS์— ์ €์žฅ ๋จ.

Hadoop2

Yarn

  • Yarn ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
    • MapReduce ์˜ SPOF(Single Point of Failure, ๋‹จ์ผ ๊ณ ์žฅ์ ): JobTracker
      • ํด๋ผ์ด์–ธํŠธ๊ฐ€ job์„ ์‹คํ–‰ ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ JobTracker๊ฐ€ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•จ.
      • JobTracker์˜ ๋ฉ”๋ชจ๋ฆฌ ์ด์Šˆ
        • JobTracker๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ „์ฒด ์‹คํ–‰ ์ •๋ณด ์œ ์ง€ํ•˜๋Š”๋ฐ ๋ฉ”๋ชจ๋ฆฌ์— ๋งŽ์€ ์ •๋ณด๋ฅผ ์œ ์ง€ ํ•˜๋‹ค๋ณด๋‹ˆ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด์„œ JobTracker์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด Job ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์–ด๋ ต๊ณ , ์ƒˆ๋กœ์šด Job์˜ ์‹คํ–‰์„ ์š”์ฒญ ํ•  ์ˆ˜ ์—†์Œ.
    • MapReduce ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ฐฉ์‹ ๋ฌธ์ œ
      • MR์€ slot(Map/Reduce slot)์ด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ํ•˜๋Š” Task ์ˆ˜ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, Map์ด๋‚˜ Reduce๋กœ ์ž‘์—…์ด ๋ชฐ๋ฆฌ๋ฉด ๋‹ค๋ฅธ ์ž‘์—…์ด ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•ด ์ž‰์—ฌ ์ž์›์ด ๋˜์–ด ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚ญ๋น„๋œ๋‹ค.
    • ํด๋Ÿฌ์Šคํ„ฐ ํ™•์žฅ ํ•œ๊ณ„
      • ์ตœ๋Œ€ ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ๋Š” 4,000๊ฐœ, ์ตœ๋Œ€ ๋™์‹œ Task ์ˆ˜๋Š” 40,000 ๊ฐœ๊ฐ€ ํ•œ๊ณ„
    • MapReduce ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ์ง€์›
    • ๋ฒ„์ „ ํ†ต์ผ ์ œ์•ฝ
      • MR job ์‹คํ–‰์„ ์š”์ฒญํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ MR ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฒ„์ „ ์ผ์น˜ ํ•„์š”
  • Yarn ๋ชฉํ‘œ
    • JobTracker ์ฃผ์š” ๊ธฐ๋Šฅ ์ถ”์ƒํ™”
      • ํด๋Ÿฌ์Šคํ„ฐ resource ๊ด€๋ฆฌ, Application life-cycle ๊ด€๋ฆฌ๋กœ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ
    • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ Application ์ˆ˜์šฉ
      • MR= MR API๋กœ ๊ตฌํ˜„๋œ ํ”„๋กœ๊ทธ๋žจ๋งŒ ์ˆ˜์šฉ ๊ฐ€๋Šฅ
      • Yarn= ์‹คํ–‰ ์š”์ฒญ Application ๋ชจ๋‘ ์ˆ˜์šฉ ๊ฐ€๋Šฅ. MR๋„ Yarn์—์„œ ์‹คํ–‰๋˜๋Š” Application ์œผ๋กœ ์ธ์‹
  • Yarn ํŠน์ง•
    • ํ™•์žฅ์„ฑ
      • ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ ๊ทœ๋ชจ 10,000 ๋…ธ๋“œ๊นŒ์ง€ ํ™•์žฅ.
    • ํด๋Ÿฌ์Šคํ„ฐ resource ํ™œ์šฉ ๊ฐœ์„ 
      • Resource Manager๋ผ๋Š” ์‹ ๊ทœ ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœํ•˜์—ฌ cpu, memory, disk, network ๋“ฑ ์‹ค์ œ ๊ฐ€์šฉ ๋‹จ์œ„ ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ Application์— ์ž์› ๋ถ„๋ฐฐ
    • ์›Œํฌ๋กœ๋“œ ํ™•์žฅ
      • MR์™ธ interactive ์งˆ์˜, ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ, ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ ํ™•์ • ๊ฐ€๋Šฅ
    • MapReduce ํ˜ธํ™˜์„ฑ
      • hadoop1 ์—์„œ ์ˆ˜ํ–‰๋˜๋˜ MR ์ฝ”๋“œ๋ฅผ ์ˆ˜์ • ์—†์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • Yarn ์•„ํ‚คํ…์ณ

  • ์ฃผ์š” ๊ธฐ๋Šฅ

    • Resource Manager
      • ๊ธ€๋กœ๋ฒŒ ์Šค์ผ€์ฅด๋Ÿฌ
      • ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๊ฐ€์šฉํ•œ ๋ชจ๋“  ์‹œ์Šคํ…œ ์ž์› ๊ด€๋ฆฌ
      • ์‹คํ–‰๋˜๋Š” application์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์ด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ถ„๋ฐฐ. ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง
    • Node Manager
      • MR์˜ Task Tracker ์—ญํ• 
      • container ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  container life cycle ๊ด€๋ฆฌ
    • Container
      • Node Manager๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์˜ ์‹œ์Šคํ…œ ์ž์›์„ ํ‘œํ˜„
      • MR ์ด TaskTracker ์—์„œ task ๋‹จ์œ„๋กœ ์‹คํ–‰ ๋˜์—ˆ๋‹ค๋ฉด, Yarn ์—์„œ๋Š” NodeManager ์—์„œ Container ๋‹จ์œ„๋กœ application ์‹คํ–‰
    • Application Master
      • ํ•˜๋‚˜์˜ Application ์„ ๊ด€๋ฆฌํ•˜๋Š” Master ์„œ๋ฒ„
  • ๋™์ž‘

    1. client ๊ฐ€ Resource Manager ์—๊ฒŒ Application ์‹คํ–‰ ์š”์ฒญ
    2. Resource Manager ๋Š” Node Manager๋ฅผ ํ†ตํ•ด Application Master ์‹คํ–‰ ์š”์ฒญ
    3. Application Master ๋Š” Resource Manager ์—๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ container ์ •๋ณด ์š”์ฒญ
    4. Resource Manager์—๊ฒŒ ์ „๋‹ฌ ๋ฐ›์€ container ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ํ•ด๋‹น ์„œ๋ฒ„์˜ Node Manager ์—๊ฒŒ Application ์‹คํ–‰์„ ์œ„ํ•œ container ์ƒ์„ฑ ์š”์ฒญ
    5. Node Manager๋Š” container ์ƒ์„ฑ ํ›„ Application ์‹คํ–‰
    6. Application ์‹คํ–‰์ด ์™„๋ฃŒ ๋˜๋ฉด Application Master ์—๊ฒŒ ์ „๋‹ฌ
    7. Application Master ๋Š” Resource Manager ์—๊ฒŒ ๋ฆฌ์†Œ์Šค ๋ฐ˜ํ™˜ ์š”์ฒญ
    8. Resource Manager๊ฐ€ ํ•ด๋‹น ์„œ๋ฒ„์˜ Node Manager๋ฅผ ํ†ตํ•ด Container ๋ฆฌ์†Œ์Šค ๋ฐ˜ํ™˜