์นด์นด์ค์ ๋ถ์ฐ ์คํ ๋ฆฌ์ง : KAGE(KAkao storaGE)
๋์ผํ ๋ฐ์ดํฐ๋ฅผ 3๊ฐ์ ํ์ผ(์๋ณธ + 2๊ฐ์ ๋ณต์ ๋ณธ)๋ก ๋ง๋ค์ด ๋ถ์ฐ ์ ์ฅํจ - ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์๋ฒ์ ์์ง๋ง, ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ 3๊ฐ์ ์ฒญํฌ(์ฒญํฌ์ )์ ์ ์ฅ ํ์ผ ์ฝ๊ธฐ ํธ๋ํฝ ๋ถ์ฐ, ๋น ๋ฅธ ์ฅ์ ํ์ ๋ฐ ์ฒ๋ฆฌ
KAGE์ ๊ตฌ์ฑ - Datanode์ Namenode
Datanode(๋ฐ์ดํฐ ๋ ธ๋)
- ์ค์ ๋ก ํ์ผ์ด ์ ์ฅ๋ ๊ณต๊ฐ. ํ์ผ์ ์ฝ๊ณ ์ ์กํ๋ ์ญํ .
- ๋ฐ์ดํฐ ๋ ธ๋์ ํ์ผ ์ ์ฅ์๋ ์ฒญํฌ(Chunk)๋ผ๋ ์ผ์ ํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์ฅ ๊ณต๊ฐ์ ๋ชจ์์ผ๋ก ๊ตฌ์ฑ๋จ
- ์ฒญํฌ๊ฐ 3๊ฐ(๋ง์คํฐ ๋ ธ๋ 1๊ฐ, ์ฌ๋ ์ด๋ธ ๋ ธ๋ 2๊ฐ) ๋ชจ์ธ ์ฒญํฌ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํจ
Namenode(๋ค์ ๋ ธ๋)
- ํ์ผ์ ์ ์ฅํ ๊ณต๊ฐ์ ๊ฒฐ์ ํ๋ ์ญํ
- ๋ฐ์ดํฐ ๋ ธ๋, ์ฒญํฌ, ์ฒญํฌ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ I/Oํ ์คํ ๋ฆฌ์ง๋ฅผ ์ ์ ํจ
- ๋ค์ ๋ ธ๋๋ L4 ๋ก๋๋ฐธ๋ฐ์๋ก ๋ถํ ๋ถ์ฐ
๋ฐ์ดํฐ I/O
๋ฐ์ดํฐ Write
- ๋ค์ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์ฒญํฌ์ ์ ๋ณด๋ฅผ request/response
- ๋ค์ ๋ ธ๋์์ ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ฒญํฌ์ ์ ๋ง์คํฐ ๋ฐ์ดํฐ ๋ ธ๋์ ์ฐ๊ธฐ request
- ์์ฒญ ๋ฐ์ ๋ง์คํฐ๋ ๋ง์คํฐ์ ํ๋๋์คํฌ์ ์ฐ๊ธฐ ์์ ์ํ ํ ๋๋จธ์ง 2๊ฐ์ ์ฌ๋ ์ด๋ธ ๋ ธ๋์ ๋ฐ์ดํฐ ์ ๋ฌํ์ฌ ์ฐ๊ธฐ ์์ ์ํ
- 3๊ฐ์ ๋ ธ๋์์ ์ฐ๊ธฐ ์์ ์ด ๋ชจ๋ ์๋ฃ๋๋ฉด Kage-Key(์ฒญํฌ์ ID, ์คํ์ ๋ฑ ํ์ผ ์์น)๋ฅผ response
๋ฐ์ดํฐ Read
- ๋ค์ ๋ ธ๋์ ์ฝ์ ๋ฐ์ดํฐ์ Kage-Key๋ฅผ ๋ณด๋ด ํ์ฌ ์ด๋ค ๋ ธ๋์์ ์ฝ๊ธฐ ์์ ์ ์ํํ๋ ๊ฒ์ด ์ ์ ํ์ง request
- ๋ค์ ๋ ธ๋์์๋ ๊ฐ ์คํ ๋ฆฌ์ง์ ํธ๋ํฝ/์ฅ์ ์ฌ๋ถ์ ๋ฐ๋ผ ์ ์ ํ ๋ ธ๋๋ฅผ ์ ์ ํ์ฌ response
- ๋ค์ ๋ ธ๋์์ ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ ๋ ธ๋์ ์ฝ๊ธฐ request/response
์ฑ๋ฅ/์ฉ๋ ํจ์จ ํฅ์
- Kage-Key : key-value ํํ๋ก ํ์ผ ์์น๋ฅผ ๊ด๋ฆฌํ์ฌ ํ์์ด ๋น ๋ฆ(ํ์ผ ์ด๋ฆ -> innode -> ๋์คํฌ ํ์ -> ํ์ผ ๋ด์ฉ I/O ๊ณผ์ ๋์ฒด)
- Expire ๊ธฐ๋ฅ : ์ฒญํฌ ์ฒญ์ ์ค์ผ์ฅด๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ์ฌ ์ผ์ ๊ธฐ๊ฐ ์ด์ ๋ณด๊ด๋ ์ฒญํฌ๋ ์ญ์ ํ ์ฌํ์ฉํจ
์ฅ์ ๋์ - IDC ์ด์คํ ์ ์ฑ
** IDC(Internet Data Center) : ๋ฐ์ดํฐ ์ผํฐ(์๋ฒ์ค)
- ์ฒญํฌ์ ๊ตฌ์ฑ ์ ๋ง์คํฐ ๋ ธ๋(1)์ ์ฌ๋ ์ด๋ธ ๋ ธ๋(2) ๊ฐ IDC๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ IDC์ ์ฅ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ง
- ๋ค์ ๋ ธ๋ ๊ฐ IDC ๊ตฌ์ฑ ์ญ์ ๋ค๋ฅด๊ฒ ํ์ฌ ์ฅ์ ์ํฉ์์๋ ๋ฌด์ค๋จ ์๋น์ค ์ ๊ณต
๋ถ๊ฐ ๊ธฐ๋ฅ
์ด๋ฏธ์ง ๋ณํ๊ณผ ๋์์ ํธ๋์ค ์ฝ๋ฉ ์ง์
- ์ด๋ฏธ์ง/๋์์ ๋ฐ์ดํฐ์ ๋ํ ์ ์ฒ๋ฆฌ/ํ์ฒ๋ฆฌ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ KAGE ์๋ฒ์์ ์ํํ์ฌ ํด๋ผ์ด์ธํธ/์๋น์ค ๋จ ์ฑ๋ฅ ๋ถ๋ด์ ์ค์
-
์ด๋ฏธ์ง/๋์์ ์ ์ฅ ์ ๋ณํ ๊ณผ์
- ๋น๋์ค ํธ๋ ์ผ๋ฌ ๋ฑ ์์ฃผ ์ฐ์ด๋ ์ด๋ฏธ์ง๋ ์บ์ฑ(Public VLAN)
- ์ค์ ์ด๋ฏธ์ง/๋์์ ํ์ผ์ 1์ฐจ์ ์ผ๋ก KAGE ์คํ ๋ฆฌ์ง์ ์์ ์ ์ฅ
- ๋ณํ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ํธ๋์ค์ฝ๋ฉ API๋ฅผ ํธ์ถํ์ฌ ์์ ์์ฒญ
- ์์ ์ Job Manager์ ์ํด ์์ฒญ์ด ์ ์๋จ(Job-Queue์์ ์์ ์์ ๊ด๋ฆฌ)
- Worker๋ ํ์์ ์์ ์ ๊บผ๋ด์ด ์ผ๋ถ๋ฅผ ํธ๋์ค์ฝ๋ฉํ ํ ์กฐ๊ฐ ํ์ผ์ ์์ ์ ์ฅ์์ ์ ๋ก๋
- 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๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ด๋ฆฌ
-
๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐฉ๋ฒ
- ํด๋ผ์ด์ธํธ๋ Kage-Key๋ง์ ๋ณด์ ํ๊ณ ์๋ ์ํ. ๋ฐ๋ผ์ Kage-Key๋ฅผ ํตํด ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง์ Cave-Key๋ฅผ ์์ฒญํ๋ API ํธ์ถ
- ์ค๋ธ์ ํธ ์คํ ๋ฆฌ์ง๊ฐ Cave-Key๋ฅผ ๊ฐ๊ณ ์๋ค๋ฉด ์ด๋ฅผ ๋ฐํ(์ฝ๋ ๋ฐ์ดํฐ). ๋ฐ๋ฉด ๊ฐ๊ณ ์์ง ์๋ค๋ฉด ํซ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธ
- ์กฐํํ Cave-Key๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ํตํด CAVE ์ฝ๊ธฐ ์์ฒญ. ์๋ค๋ฉด KAGE์ ์ฝ๊ธฐ ์์ฒญ
- API๊ฐ ๋ฐ์ดํฐ ๋ฐํ