์นด์นด์˜ค์˜ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ : KAGE(KAkao storaGE)

๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ 3๊ฐœ์˜ ํŒŒ์ผ(์›๋ณธ + 2๊ฐœ์˜ ๋ณต์ œ๋ณธ)๋กœ ๋งŒ๋“ค์–ด ๋ถ„์‚ฐ ์ €์žฅํ•จ - ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์žˆ์ง€๋งŒ, ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” 3๊ฐœ์˜ ์ฒญํฌ(์ฒญํฌ์…‹)์— ์ €์žฅ ํŒŒ์ผ ์ฝ๊ธฐ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ, ๋น ๋ฅธ ์žฅ์•  ํŒŒ์•… ๋ฐ ์ฒ˜๋ฆฌ

KAGE์˜ ๊ตฌ์„ฑ - Datanode์™€ Namenode

Datanode(๋ฐ์ดํ„ฐ ๋…ธ๋“œ)

  • ์‹ค์ œ๋กœ ํŒŒ์ผ์ด ์ €์žฅ๋œ ๊ณต๊ฐ„. ํŒŒ์ผ์„ ์ฝ๊ณ  ์ „์†กํ•˜๋Š” ์—ญํ• .
  • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์˜ ํŒŒ์ผ ์ €์žฅ์†Œ๋Š” ์ฒญํฌ(Chunk)๋ผ๋Š” ์ผ์ •ํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ ๊ณต๊ฐ„์˜ ๋ชจ์ž„์œผ๋กœ ๊ตฌ์„ฑ๋จ
  • ์ฒญํฌ๊ฐ€ 3๊ฐœ(๋งˆ์Šคํ„ฐ ๋…ธ๋“œ 1๊ฐœ, ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ 2๊ฐœ) ๋ชจ์ธ ์ฒญํฌ์…‹ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•จ

Namenode(๋„ค์ž„ ๋…ธ๋“œ)

  • ํŒŒ์ผ์„ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• 
  • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ, ์ฒญํฌ, ์ฒญํฌ์…‹ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ I/Oํ•  ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ ์ •ํ•จ
  • ๋„ค์ž„ ๋…ธ๋“œ๋„ L4 ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋กœ ๋ถ€ํ•˜ ๋ถ„์‚ฐ

๋ฐ์ดํ„ฐ I/O

๋ฐ์ดํ„ฐ Write

  1. ๋„ค์ž„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ฒญํฌ์…‹ ์ •๋ณด๋ฅผ request/response
  2. ๋„ค์ž„ ๋…ธ๋“œ์—์„œ ๋ฐ›์€ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฒญํฌ์…‹์˜ ๋งˆ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์— ์“ฐ๊ธฐ request
  3. ์š”์ฒญ ๋ฐ›์€ ๋งˆ์Šคํ„ฐ๋Š” ๋งˆ์Šคํ„ฐ์˜ ํ•˜๋“œ๋””์Šคํฌ์— ์“ฐ๊ธฐ ์ž‘์—… ์ˆ˜ํ–‰ ํ›„ ๋‚˜๋จธ์ง€ 2๊ฐœ์˜ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜์—ฌ ์“ฐ๊ธฐ ์ž‘์—… ์ˆ˜ํ–‰
  4. 3๊ฐœ์˜ ๋…ธ๋“œ์—์„œ ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋ฉด Kage-Key(์ฒญํฌ์…‹ID, ์˜คํ”„์…‹ ๋“ฑ ํŒŒ์ผ ์œ„์น˜)๋ฅผ response

๋ฐ์ดํ„ฐ Read

  1. ๋„ค์ž„ ๋…ธ๋“œ์— ์ฝ์„ ๋ฐ์ดํ„ฐ์˜ Kage-Key๋ฅผ ๋ณด๋‚ด ํ˜„์žฌ ์–ด๋–ค ๋…ธ๋“œ์—์„œ ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ์ง€ request
  2. ๋„ค์ž„ ๋…ธ๋“œ์—์„œ๋Š” ๊ฐ ์Šคํ† ๋ฆฌ์ง€์˜ ํŠธ๋ž˜ํ”ฝ/์žฅ์•  ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋…ธ๋“œ๋ฅผ ์„ ์ •ํ•˜์—ฌ response
  3. ๋„ค์ž„ ๋…ธ๋“œ์—์„œ ๋ฐ›์€ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์— ์ฝ๊ธฐ request/response

์„ฑ๋Šฅ/์šฉ๋Ÿ‰ ํšจ์œจ ํ–ฅ์ƒ

  1. Kage-Key : key-value ํ˜•ํƒœ๋กœ ํŒŒ์ผ ์œ„์น˜๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ํƒ์ƒ‰์ด ๋น ๋ฆ„(ํŒŒ์ผ ์ด๋ฆ„ -> innode -> ๋””์Šคํฌ ํƒ์ƒ‰ -> ํŒŒ์ผ ๋‚ด์šฉ I/O ๊ณผ์ • ๋Œ€์ฒด)
  2. Expire ๊ธฐ๋Šฅ : ์ฒญํฌ ์ฒญ์†Œ ์Šค์ผ€์ฅด๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ์ผ์ • ๊ธฐ๊ฐ„ ์ด์ƒ ๋ณด๊ด€๋œ ์ฒญํฌ๋Š” ์‚ญ์ œ ํ›„ ์žฌํ™œ์šฉํ•จ

์žฅ์•  ๋Œ€์‘ - IDC ์ด์ค‘ํ™” ์ •์ฑ…

** IDC(Internet Data Center) : ๋ฐ์ดํ„ฐ ์„ผํ„ฐ(์„œ๋ฒ„์‹ค)

  • ์ฒญํฌ์…‹ ๊ตฌ์„ฑ ์‹œ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ(1)์™€ ์Šฌ๋ ˆ์ด๋ธŒ ๋…ธ๋“œ(2) ๊ฐ„ IDC๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ IDC์˜ ์žฅ์• ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€
  • ๋„ค์ž„ ๋…ธ๋“œ ๊ฐ„ IDC ๊ตฌ์„ฑ ์—ญ์‹œ ๋‹ค๋ฅด๊ฒŒ ํ•˜์—ฌ ์žฅ์•  ์ƒํ™ฉ์—์„œ๋„ ๋ฌด์ค‘๋‹จ ์„œ๋น„์Šค ์ œ๊ณต

๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

์ด๋ฏธ์ง€ ๋ณ€ํ™˜๊ณผ ๋™์˜์ƒ ํŠธ๋žœ์Šค ์ฝ”๋”ฉ ์ง€์›

  • ์ด๋ฏธ์ง€/๋™์˜์ƒ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ ์ฒ˜๋ฆฌ/ํ›„์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” KAGE ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ/์„œ๋น„์Šค ๋‹จ ์„ฑ๋Šฅ ๋ถ€๋‹ด์„ ์ค„์ž„
  • ์ด๋ฏธ์ง€/๋™์˜์ƒ ์ €์žฅ ์‹œ ๋ณ€ํ™˜ ๊ณผ์ •

    1. ๋น„๋””์˜ค ํŠธ๋ ˆ์ผ๋Ÿฌ ๋“ฑ ์ž์ฃผ ์“ฐ์ด๋Š” ์ด๋ฏธ์ง€๋Š” ์บ์‹ฑ(Public VLAN)
    2. ์‹ค์ œ ์ด๋ฏธ์ง€/๋™์˜์ƒ ํŒŒ์ผ์€ 1์ฐจ์ ์œผ๋กœ KAGE ์Šคํ† ๋ฆฌ์ง€์— ์ž„์‹œ ์ €์žฅ
    3. ๋ณ€ํ™˜ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŠธ๋žœ์Šค์ฝ”๋”ฉ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘์—… ์š”์ฒญ
    4. ์ž‘์—…์€ Job Manager์— ์˜ํ•ด ์š”์ฒญ์ด ์ ‘์ˆ˜๋จ(Job-Queue์—์„œ ์ž‘์—… ์ˆœ์„œ ๊ด€๋ฆฌ)
    5. Worker๋Š” ํ์—์„œ ์ž‘์—…์„ ๊บผ๋‚ด์–ด ์ผ๋ถ€๋ฅผ ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•œ ํ›„ ์กฐ๊ฐ ํŒŒ์ผ์„ ์ž„์‹œ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œ
    6. Worker๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด ์ž„์‹œ ์ €์žฅ์†Œ์˜ ์กฐ๊ฐ ํŒŒ์ผ์„ ๋ชจ์•„ ์™„์ „ํ•œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์‹ค์ œ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œ

์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€ - Meta-Kage

** ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๋ž€? : ์‹ค์ œ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ์˜ ๊ณ ์œ  ์‹๋ณ„ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ํ’€ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ

  • (1)์‹ค์ œ ํŒŒ์ผ์„ ์ €์žฅํ•œ KAGE ์Šคํ† ๋ฆฌ์ง€ ์ •๋ณด์ธ Kage-Key์™€ (2)ํŒŒ์ผ ๋ฉ”ํƒ€ ์ •๋ณด(ํŒŒ์ผ ์ œ๋ชฉ, ํŒŒ์ผ ์ƒ์„ฑ์ผ, ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•œ ํด๋ผ์ด์–ธํŠธ ์ •๋ณด ๋“ฑ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ)๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ €์žฅํ•œ ์Šคํ† ๋ฆฌ์ง€
  • Key-Value Store ํ˜•ํƒœ
  • ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์—์„œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ Kage-Key๋ฅผ ์ฐพ์œผ๋ฉด ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ KAGE ์Šคํ† ๋ฆฌ์ง€์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

Cold Storage - Cave

** Cold Data : ์ตœ๊ทผ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ(<-> Hot Data : I/O ์š”์ฒญ์ด ๋งŽ์€ ์ธ๊ธฐ์žˆ๋Š” ๋ฐ์ดํ„ฐ)

  • ํ•ซ ๋ฐ์ดํ„ฐ๋Š” 3์ค‘ํ™” ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ์ฝœ๋“œ ๋ฐ์ดํ„ฐ๋Š” 1.5์ค‘ํ™” ํ•˜์—ฌ ์ €์žฅ
  • ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰์€ ํšจ์œจ์ ์œผ๋กœ ๊ฐ์ถ•ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ์€ ๊ฐ•ํ™”
  • ์ด 9๊ฐœ์˜ ๋ธ”๋Ÿญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  9๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ์— ๋‚˜๋ˆ„์–ด ์ €์žฅ. ์ฝ์„ ๋•Œ๋Š” 6๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ.
  • ์ฝœ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ •๋ณด์ธ Cave-Key๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ฐฉ๋ฒ•

    1. ํด๋ผ์ด์–ธํŠธ๋Š” Kage-Key๋งŒ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ. ๋”ฐ๋ผ์„œ Kage-Key๋ฅผ ํ†ตํ•ด ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€์— Cave-Key๋ฅผ ์š”์ฒญํ•˜๋Š” API ํ˜ธ์ถœ
    2. ์˜ค๋ธŒ์ ํŠธ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ Cave-Key๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋ฐ˜ํ™˜(์ฝœ๋“œ ๋ฐ์ดํ„ฐ). ๋ฐ˜๋ฉด ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ํ•ซ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ
    3. ์กฐํšŒํ•œ Cave-Key๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ํ†ตํ•ด CAVE ์ฝ๊ธฐ ์š”์ฒญ. ์—†๋‹ค๋ฉด KAGE์— ์ฝ๊ธฐ ์š”์ฒญ
    4. API๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜

References

๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€(Kage)์˜ ๋ฐœ์ „๊ณผ์ •