๐Ÿฅ

ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ ๋ณธ๋ฌธ

๋ฐ์ดํ„ฐ/ํ•˜๋‘ก

ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ

•8• 2022. 2. 11. 12:58

ํ•˜๋‘ก, ํ•˜๋‘ก ์—์ฝ”์‹œ์Šคํ…œ

  1. ํ•˜๋‘ก
    ๋Œ€์šฉ๋Ÿ‰์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ
    ๋Œ€๋Ÿ‰์œผ๋กœ ํ™•์žฅ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ
    ์ปดํ“จํŒ… ๋ถ„์„ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ, ๋†’์€ ์ˆ˜์ค€์˜ ๋‚ด๊ตฌ์„ฑ, ๊ฐ€์šฉ์„ฑ, ํ™•์žฅ์„ฑ ์ œ๊ณต
  2. ํ•˜๋‘ก 2.0
    YARN ์ถ”๊ฐ€
    MapReduce ์ด์™ธ์— Spark, Giraph ๋“ฑ ๋‹ค๋ฅธ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  3. ํ•˜๋‘ก ์—์ฝ” ์‹œ์Šคํ…œ
    ํ•˜๋‘ก์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์„œ๋ธŒ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋ชจ์ž„
    ํ•˜๋‘ก์˜ ํ™œ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ข…๋ฅ˜

  1. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
    ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.

    i. Chukwa
    ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋กœ๊ทธ ์ˆ˜์ง‘ ์†”๋ฃจ์…˜
    ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘
    ๋ชจ๋‹ˆํ„ฐ๋ง ๋กœ๊ทธ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ํ•˜๋‘ก ๋กœ๊ทธ ๋“ฑ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค.

    ii. Flume
    ๋Œ€๋Ÿ‰์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ด ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜
    ์—ฐ์†์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ „์†ก, HDFS์— ์ €์žฅ
    ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ˆ˜์ง‘ํ•˜๊ณ  HDFS์™€ ๊ฐ™์€ ์ค‘์•™ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๋Š” ๋กœ๊น… ์‹œ์Šคํ…œ์— ์ ํ•ฉ

    iii. scribe
    ๋Œ€๋Ÿ‰์˜ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ๋กœ๊ทธ ์ˆ˜์ง‘
    ๋‹ค๋ฅธ ๋กœ๊ทธ ์ˆ˜์ง‘ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ
    → Message queue์— ์Œ“์ธ ๋ฉ”์‹œ์ง€๋ฅผ DB์— ์ €์žฅ, ์ €์žฅ ์‹คํŒจ ์‹œ ๋กœ์ปฌ์— ์ €์žฅ ํ›„ DB๊ฐ€ ๋ณต๊ตฌ๋˜์—ˆ์„ ๋•Œ ๋‹ค์‹œ DB์— ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€๋งŒ ๋ณด์žฅํ•˜๋ฏ€๋กœ ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ค.
    c++๋กœ ๊ฐœ๋ฐœ๋˜์–ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ณด๋‹ค 3~5๋ฐฐ ๋น ๋ฅธ ์„ฑ๋Šฅ
    facebook์—์„œ ๊ฐœ๋ฐœํ–ˆ์œผ๋‚˜ ํ˜„์žฌ facebook์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐœ์ „์ด ๊ฑฐ์˜ ์—†๋Š” ์ƒํƒœ์ด๋‹ค.

  2. DBMS ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
    ํ•œ DBMS ์ €์žฅ์†Œ์—์„œ ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋กœ ์ „์†กํ•œ๋‹ค.

    i. Sqoop
    RDB์ฒ˜๋Ÿผ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ฐ„ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์†”๋ฃจ์…˜
    ๋ณ‘๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ†ตํ•ด ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์žฅ

    ii. Hiho
    Sqoop๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ „์†ก ์†”๋ฃจ์…˜
    ํ•˜์ง€๋งŒ Oracle๊ณผ MySQL์˜ ๋ฐ์ดํ„ฐ ์ „์†ก๋งŒ ์ง€์›

  3. ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ
    i. Kafka
    ๋Œ€์šฉ๋Ÿ‰์˜ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ฒ˜๋ฆฌ์— ํŠนํ™”๋œ ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ
    ๋กœ๊ทธ๋ฐ์ดํ„ฐ, ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€ ๋“ฑ API๋กœ ํ˜ธ์ถœํ•  ๋•Œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ฒ˜๋ฆฌ
    ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ๋””์Šคํฌ์— ์ €์žฅ

kafka cluster๋Š” ์ค‘๊ฐ„์—์„œ broker ์—ญํ• ์„ ์ˆ˜ํ–‰.
broker์˜ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋Š” zookeeper๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ kafka๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ zookeeper๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ

  1. HDFS
    GFS ๊ธฐ๋ฐ˜ ํ•˜๋‘ก์˜ ๋Œ€ํ‘œ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ
    ๋Œ€์šฉ๋Ÿ‰์˜ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

    < ํŠน์ง• >
    ํŒŒ์ผ์„ block ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ด์„œ ๋ณด๊ด€ → ๋ธ”๋ก์„ ์‚ฌ์šฉํ•ด ์Šคํ† ๋ฆฌ์ง€์˜ ์„œ๋ธŒ ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ฆ. ๋ธ”๋ก ์‚ฌ์ด์ฆˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 64mb ํ˜น์€ 128mb.
    ๋ธ”๋ก์„ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„ํ• ํ•ด์„œ ์ €์žฅ(๊ธฐ๋ณธ ๋ณต์ œ ๊ฐœ์ˆ˜ = 3) → ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ
    ๋ฒ”์šฉ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์ข‹์€ ํ™•์žฅ์„ฑ
    ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ œ๊ณต
    ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์—„๊ฒฉํ•œ ์•„ํ‚คํ…์ณ์ด๋ฉฐ Write-once, read-many case์— ์ ํ•ฉํ•˜๋‹ค.

    data node๋Š” ์‹ค์ œ๋กœ ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ(๋ธ”๋ก)๋ฅผ ์ €์žฅ
    name node๋Š” data๋“ค์— ๋Œ€ํ•œ metadata ์ €์žฅ
    → ์™ธ๋ถ€์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” Name node์˜ metadata๋ฅผ ์ฝ๊ณ  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„ data node์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
    job tracker๋Š” TaskTracker์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , MapReduce job์„ ๋ฐฐํฌ/์Šค์ผ€์ฅด๋ง/๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
    TastTracker๋Š” Task๋“ค์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์ด๋‹ค.


  2. HBase
    HDFS ์œ„์— ๋งŒ๋“ค์–ด์ง„ NoSQL ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    < ํŠน์ง• >
    ์ปฌ๋ŸผํŒจ๋ฐ€๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ ์Šคํ‚ค๋งˆ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค → ์กฐ์ธ, ์ธ๋ฑ์Šค๊ฐ€ ์—†์Œ
    HDFS์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ๋žœ๋ค ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ธฐ๋Šฅ ์ œ๊ณต

  3. Kudu
    ํ•˜๋‘ก ํ”Œ๋žซํผ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€
    < ํŠน์ง• >
    Primary Key๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ B+ ํŠธ๋ฆฌ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜์ค€์˜ ๋น ๋ฅธ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ
    ์ˆœ์ฐจ ์ฝ๊ธฐ, ๋žœ๋ค ์ฝ๊ธฐ ๋ชจ๋‘ ํšจ์œจ์ 
    ๊ฐ„๋‹จํ•œ CRUD ์—ฐ์‚ฐ ๋“ฑ์€ ์ œ๊ณตํ•˜๋‚˜ join, group by์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์—ฐ์‚ฐ์€ ์ œ๊ณตํ•˜์ง€ ์•Š์•„ impala์™€ ๊ฐ™์€ ๋ณ„๋„์˜ ์งˆ์˜์ฒ˜๋ฆฌ์—”์ง„ ํ•„์š”

  4. ํŒŒ์ผ ํฌ๋งท
    i. Parquet
    ์ค‘์ฒฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ๋Ÿผ ๊ธฐ์ค€ ์ €์žฅ ํฌ๋งท
    ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์ธ์ฝ”๋”ฉ ํšจ์œจ๊ณผ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ๋†’์Œ
    ์Šคํ‚ค๋งˆ๋Š” ํŒŒ์ผ ๋งˆ์ง€๋ง‰์— ์ €์žฅ

    ii. Avro
    ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํฌ๋งท
    ์ง๋ ฌํ™”: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ์˜ค๋ธŒ์ ํŠธ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์— ์ €์žฅํ•˜๊ณ  ๋‚˜์ค‘์— ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •
    ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ ํ•˜๋‘ก ์‹œ์Šคํ…œ๊ณผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
    ์Šคํ‚ค๋งˆ๋Š” json, ๋ฐ์ดํ„ฐ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท์œผ๋กœ ์ธ์ฝ”๋”ฉ
    ์Šคํ‚ค๋งˆ๋Š” ํ—ค๋”์— ์ €์žฅ
    row ๊ธฐ๋ฐ˜์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ full scan ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ write๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ์œ ๋ฆฌ

 

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

  1. MapReduce
    ํ•˜๋‘ก ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ. Map(๋งคํ•‘) + Reduce(์ฒ˜๋ฆฌ)
    ๊ธฐ์กด์˜ MR1์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ, ์Šค์ผ€์ค„๋ง, MapReduce job์ด ๋ชจ๋‘ MapReduce ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๋™๋ฌธ์ œ์™€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์ƒ๊ธด๋‹ค. → YARN ๋“ฑ์žฅ

  2. Yarn
    ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ž์›๊ณผ ์Šค์ผ€์ฅด๋ง์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ
    MapReduce๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์™€ ์žก ์Šค์ผ€์ฅด๋ง ์—ญํ• ์„ Yarn๊ณผ ๋ถ„๋ฆฌํ–ˆ๋‹ค.

    i. ResourceManager
    Yarn ํด๋Ÿฌ์Šคํ„ฐ์˜ master ์„œ๋ฒ„. ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ• ๋‹น(์Šค์ผ€์ฅด๋ง)ํ•œ๋‹ค.
    ii. NodeManager
    Yarn ํด๋Ÿฌ์Šคํ„ฐ์˜ worker ์„œ๋ฒ„. ResourceManager๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์œผ๋ฉฐ Container๋ฅผ fork ์‹œํ‚ค๊ณ  ์‹คํ–‰, ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค.

    ResourceManager ํ•˜๋‚˜์™€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ApplicationMaster๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋ณ‘๋ชฉํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
    Global ResourceManager๊ฐ€ ์กด์žฌํ•ด ์ž์›ํ™œ์šฉ๋„๊ฐ€ ๋†’๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
    Yarn์ด ์Šค์ผ€์ฅด๋ง๊ณผ ์ž์›๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋ฏ€๋กœ MapReduce ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    MapReduce with Yarn

    1 client๊ฐ€ ResourceManager(RM)์—๊ฒŒ job ID๋ฅผ ์š”์ฒญํ•œ๋‹ค. RM์€ job ID๋ฅผ client์—๊ฒŒ ๋„˜๊ฒจ์ค€๋‹ค. ์ดํ›„ RM์—๊ฒŒ job ์‹คํ–‰์„ ์š”์ฒญํ•œ๋‹ค.
    2 RM์ด job queue์—์„œ ํ•ด๋‹น job์„ ์„ ํƒํ•˜๋ฉด NodeManager(NM)์—๊ฒŒ ApplicationMaster(AM)์˜ ์‹คํ–‰์„ ์š”์ฒญํ•œ๋‹ค.
    3 AM์„ ์‹คํ–‰ํ•œ๋‹ค.
    4 HDFS๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ splitํ•˜๊ณ  split ๋‹น ํ•œ ๊ฐœ์˜ map(task)์„ ๋งŒ๋“ ๋‹ค. ์ด๋–„ AM์€ ์–ด๋–ป๊ฒŒ ๋งต๋ฆฌ๋“€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ, job์ด ์ž‘๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋…ธ๋“œ ์•ˆ์—์„œ ๋Œ๋ฆฌ๊ธฐ๋กœ ๊ฒฐ์ •
    5 job์ด ์ž‘์ง€ ์•Š๋‹ค๋ฉด RM์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์š”์ฒญ. RM์€ splits๊ฐ€ ์–ด๋””์— ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€ ์—ฌ๋Ÿฌ ์ •๋ณด(NM์˜ heartbeats ๋“ฑ)์„ ํ† ๋Œ€๋กœ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•  ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ ์ ˆํ•œ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ๋žœ๋ค์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ AM์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
    6 AM์€ ํ• ๋‹น๋ฐ›์€ NM์—๊ฒŒ container ์‹คํ–‰์„ ์š”์ฒญํ•œ๋‹ค.
    7 NM์ด container๋ฅผ ์‹คํ–‰ํ•˜๋ฉด YARN child๊ฐ€ ์‹คํ–‰๋œ๋‹ค. YARN child๋Š” ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ ๋ถ„๋ฆฌ๋˜์–ด์„œ ์‹คํ–‰๋œ๋‹ค. Yarn child๋Š” HDFS์—์„œ ํ•„์š”ํ•œ job resources๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋งต ํ˜น์€ ๋ฆฌ๋“€์Šค๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.


    job์ด ์‹คํ–‰๋œ ํ›„์— yarn child๋Š” AM์—๊ฒŒ 3์ดˆ์— ํ•œ ๋ฒˆ์”ฉ progress report๋ฅผ ๋ณด๋‚ธ๋‹ค. AM์€ ์ด report๋“ค์„ ํ•ฉ์ณ์„œ client์—๊ฒŒ ๋ฐ”๋กœ ๋ณด๋‚ธ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด client๋Š” ์ž‘์—… ์ง„ํ–‰์— ๋Œ€ํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.


  3. Spark
    ๊ณ ์†ก ๋ฒ”์šฉ ๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ”Œ๋žซํผ
    In-memory ์ปดํ“จํŒ…์œผ๋กœ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. → ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ๊ฐ€๋Šฅ
    ์ผ๊ด„ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ, ๋จธ์‹  ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹จ์ผ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ†ตํ•ฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค.
    Lazy Execution์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

    ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ž๋ฃŒ๊ตฌ์กฐ
    i. RDD
    Immutable data๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์ด ์–ด๋ ต๋‹ค.
    transformation/action api๋ฅผ ์ง€์›ํ•œ๋‹ค.
    transformation ๊ณผ์ •์„ DAG๋กœ ์ €์žฅํ•œ๋‹ค. → ์žฅ์•  ๋ฐœ์ƒ ์‹œ DAG๋ฅผ ํ†ตํ•ด ๋ณต๊ตฌ ๊ฐ€๋Šฅ (Fault Tolerance)

    ii. Dataframe/Dataset
    Spark 2.0๋ถ€ํ„ฐ ๋‘ api๊ฐ€ ๋ณ‘ํ•ฉ๋จ
    RDD์™€ ์œ ์‚ฌํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๋ฉฐ ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๋‹ค.
    ์ปดํŒŒ์ผ ์‹œ์ ์— ์—๋Ÿฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
    ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— action ๋‹จ๊ณ„์—์„œ ์ฟผ๋ฆฌ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.


  4. Mahout
    ๊ธฐ๊ณ„ํ•™์Šต ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ
    ์ŠคํŒŒํฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด MLlib์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

  5. Pig
    ํ•˜๋‘ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ
    ์ž์ฒด์–ธ์–ด 'Pig Latin'์„ ํ†ตํ•ด ๋ณต์žกํ•œ  MapReduce ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ”ผํ•˜๊ณ  ์‰ฝ๊ฒŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    Pig ์—”์ง„ ๋‚ด์—์„œ Pig Latin ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด์„ํ•ด MapReduce๋กœ ๋ณ€ํ™˜
    ๊ทธ๋Ÿฌ๋‚˜ ๋งต๋ฆฌ๋“€์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด์ฐจํ”ผ ๋งต๋ฆฌ๋“€์Šค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

 

SQL on Hadoop

๋Œ€ํ™”ํ˜• ์งˆ์˜ ์ฒ˜๋ฆฌ: ์ˆ˜ ์ดˆ~์ˆ˜ ๋ถ„์ด ๊ฑธ๋ฆฌ๋Š” ์งง์€ ์‹œ๊ฐ„์˜ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ

๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค: ์ˆ˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋น„๊ต์  ๊ธด ์‹œ๊ฐ„์˜ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ

 

  1. Hive
    ํ•˜๋‘ก์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ํŒจํ‚ค์ง€์ด๋ฉฐ ๋ฐ์ดํ„ฐ ์š”์•ฝ, ์ฟผ๋ฆฌ, ๋ถ„์„์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‘ก ์œ„์— ๊ตฌ์ถ•
    ๋งต๋ฆฌ๋“€์Šค์˜ ์ƒ์œ„ ์–ธ์–ด์ด๋ฉฐ ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.
    SQL๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋งต๋ฆฌ๋“€์Šค ์žก์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋œ๋‹ค.

  2. Impala
    HDFS์—์„œ ๋™์ž‘ํ•˜๋Š” ์ฆ‰๊ฐ์ ์ธ ์‹ค์‹œ๊ฐ„ SQL ์งˆ์˜ ์‹œ์Šคํ…œ
    CPU ๋ถ€ํ•˜๊ฐ€ ๊ฐ์†Œํ•ด ๊ฐ์†Œํ•œ ๋Œ€์—ญํญ ๋งŒํผ I/O๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์•„ I/O ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ Hive๋ณด๋‹ค 3~4๋ฐฐ ๋” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.
    ๋งต๋ฆฌ๋“€์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์˜ ์‹คํ–‰์ด ๋น„ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ(1๊ฐœ ์ด์ƒ์˜ join ๋“ฑ)์—์„œ๋Š” 7~45๋ฐฐ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.
    ํ”„๋กœ์„ธ์Šค
    i. impalad process: ๋ถ„์‚ฐ ์งˆ์˜ ์—”์ง„ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์œ„์—์„œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ„ํš ์„ค๊ณ„์˜ค ใ…์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ํ•œ๋‹ค.
    ii. impala state store: ๊ฐ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” impalad process์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋ณ€๊ฒฝ์‹œ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

    ๊ธฐ์กด ๋งต๋ฆฌ๋“€์Šค ๋Œ€์‹  impalad ํ”„๋กœ์„ธ์Šค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์œ„์—์„œ ์งˆ์˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋งต๋ฆฌ๋“€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Hive๋ณด๋‹ค ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.

 

๊ธฐํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ

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

  2. Oozie (์›Œํฌํ”Œ๋กœ์šฐ)
    Workflow scheduler ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋งต๋ฆฌ๋“€์Šค ์žก์„ ์—ฐ๊ฒฐํ•  ๋•Œ ๊ฐ ์žก๋“ค์˜ ์‹œ์ž‘๊ณผ ์ข…๊ฒฐ, ๋ถ„๊ธฐ์กฐ๊ฑด ๋“ฑ์„ ์ž๋™ํ™”/์Šค์ผ€์ฅด๋งํ•˜๋Š” ์†”๋ฃจ์…˜
    ์•„๋ž˜์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
         * Scheduling: ํŠน์ • ์‹œ๊ฐ„/๊ฐ„๊ฒฉ์— ์•ก์…˜ ์ˆ˜ํ–‰
         * Coordinating: ์ด์ „ ์•ก์…˜ ์™„๋ฃŒ ํ›„ ๋‹ค์Œ ์•ก์…˜ ์‹œ์ž‘
         * Managing: ์•ก์…˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„/๋‹จ๊ณ„ ์ €์žฅ ๋“ฑ

  3. Zeppeling (๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”)
    ์›น ๊ธฐ๋ฐ˜ ์›Œํฌ ์ŠคํŽ˜์ด์Šค์— ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์˜ API, ์ฟผ๋ฆฌ ๋“ฑ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์›น์— ๋ณด์—ฌ์ค€๋‹ค.

  4. Hue (๋ชจ๋‹ˆํ„ฐ๋ง)
    ํ•˜๋‘ก ์—์ฝ” ์‹œ์Šคํ…œ์˜ ์ง€์›์„ ์œ„ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
    → ์‹œ๊ฐํ™” ๋„๊ตฌ, job scheduling์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค, ํ•˜๋‘ก ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ ์ œ๊ณต