๊ฐ์
ํ๋ก์ด๋ ํ ๋ฒ์ ์ฌ๋ฌ ๋์คํฌ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ด์ด, ์ฌ๋ฌ ๋์ ์ปดํจํฐ ํด๋ฌ์คํฐ์์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์
์ ๋ถ์ฐ์ฒ๋ฆฌํ ์ ์๋ ํ๋ ์์ํฌ์ด๋ค.
Java๋ก ์์ฑ๋ Apache ์คํ์์ค ํ๋ซํผ์ด๋ค.
๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์๊ตฌ
์จ๋ผ์ธ ์๋น์ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ์ ์ ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์๊ณผ ์ข
๋ฅ๊ฐ ๊ธ์ฆํ๋ฉฐ, ๊ธฐ์กด์ RDBMS๋ก๋ ๋น์ ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ๊ณ๊ฐ ๋ฐ๊ฒฌ๋จ
๊ณ ๋น์ฉ์ RDBMS์ ๋์
RDBMS๋ ๊ณ ์ฑ๋ฅ ์ฅ๋น์ ์คํ ๋ฆฌ์ง๋ฅผ ํ์๋ก ํ์ง๋ง, ํ๋ก์ ์ ๊ฐ์ ๋ฆฌ๋
์ค ์๋ฒ์์ ๋์
ํ๋ก ์ํคํ
์ฒ
ํ๋ก์ 3๊ฐ์ง์ ์ฃผ์ ๊ตฌ์ฑ์์๋ฅผ ํฌํจํ๋ค.
HDFS / Map-Reduce / YARN

1. HDFS(Hadoop Distributed File System)

๋ฐ์ดํฐ ์ ์ฅ
- ํ๋ก์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ญํ ์ ํ๋ค.
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ํ์ผ์ ๋ธ๋ก ๋จ์๋ก ๋๋์ด ์ฌ๋ฌ ๋
ธ๋์ ๋ถ์ฐ์ ์ฅํ๋ ๋ถ์ฐ ํ์ผ ์์คํ
์ด๋ค.
- ๋ณดํต ๋ฐ์ดํฐ ํ์ผ์ 128MB, 256MB ํฌ๊ธฐ ๋ธ๋ก์ผ๋ก ๋๋์ด ์ ์ฅํ๋ค.
Master-Slave ๊ตฌ์กฐ
- ๋ค์๋
ธ๋(Name Node)
- ๋ฉํ ๋ฐ์ดํฐ(ํ์ผ์ด๋ฆ, ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ, ํ์ผ ํฌ๊ธฐ ๋ฑ)์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ๋
ธ๋๋ก๋ถํฐ 3์ด๋ง๋ค heartbeat๋ฅผ ์์ ํ์ฌ ๋ฐ์ดํฐ ๋
ธ๋์ด ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํจ
- heartbeat๋ฅผ ๋ฐ์ง ๋ชปํ ๋ฐ์ดํฐ ๋
ธ๋๋ฅผ ์ฅ์ ๋
ธ๋๋ก ํ๋จํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํจ
- ๋ฐ์ดํฐ ๋
ธ๋(Data Node)
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ ๋ค์ ๋
ธ๋์ ์ง์์ ๋ฐ๋ผ ์์
(๋ธ๋ก ๋ณต์ , ์์ฑ, ์ญ์ )
- client์ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ์ ์์ฒญ์ ์ฒ๋ฆฌ
- ์์ ์ด ๋ณด์ ํ ๋ธ๋ก ์ ๋ณด๋ฅผ ๋ค์ ๋
ธ๋์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ
๋ณต์
- ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ณต์ ๋ณธ 3๊ฐ๋ฅผ ์ ์งํ๋ค.
๊ฒฐํจ ๋ด์ฑ(Fault Tolerance)
๋ฐ์ดํฐ ๋
ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด, ๋ค์ ๋
ธ๋๋ ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋
ธ๋์ ๋ณต์ ํด ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๋ค.
2. Map Reduce

- ํ๋ก์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๊ณ์ฐ์ ๋ด๋นํ๋ฉฐ ํฌ๊ฒ Map๊ณผ Reduce ๋ ๋จ๊ณ๋ก ๋๋์ด์ง๋ค.
Map ๊ณผ์
- Splitting
- HDFS์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์ ํฌ๊ธฐ ๋ธ๋ก์ผ๋ก ๋๋์ด, ๋งต ์์
์ ์ ๋ฌ
- Mapper ์คํ, Mapping
- ๊ฐ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ํด ๊ฐ๋ณ์ ์ผ๋ก Mapper ์คํ
- ๋ฐ์ดํฐ๋ฅผ (ํค,๊ฐ) ์์ผ๋ก ๋ณํ
- ์ค๊ฐ ๊ฒฐ๊ณผ ์์ฑ
- Mapper์ ๊ฒฐ๊ณผ๋ HDFS์ ์ ์ฅ๋์ง ์๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ ๋ก์ปฌ ๋์คํฌ์ ์ ์ฅ๋จ
Redcue ๊ณผ์
- Shuffling, Sorting
- Mapper์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ Reducer์ ์ ์กํ๊ธฐ ์ ์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ์ ๋ ฌ
- ์ด ๊ณผ์ ์์ ๋์ผํ ํค๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ํ๋๋ก ํฉ์ณ์ง๋๋ก ํจ
- Reducer ์คํ, Reducing
- ๊ฐ Reducer๋ ๋์ผํ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ ๊ทธ๋ฃนํํ์ฌ ์ง๊ณ, ๊ณ์ฐ ๋๋ ๋ณํ ์์
์ํ
- ์ต์ข
์ถ๋ ฅ ์ ์ฅ
- ์ต์ข
์ถ๋ ฅ์ ๋ค์ HDFS์ ์ ์ฅ๋จ
Map Reduce ํน์ง
- ๋ถ์ฐ ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๋
ธ๋์ ๋ธ๋ก ๋จ์๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์, ์์
์ ๋ณ๋ ฌ๋ก ์ํ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ง์ญ์ฑ
- ๋ฐ์ดํฐ๊ฐ ์์นํ ๊ณณ์์ ์ฐ์ฐ ์ํํ๊ธฐ์, ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ ์ต์ํ
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋
๋ฆฝ์ฑ
- ๋งต๋ฆฌ๋์ค๋ Java๋ฟ๋ง ์๋๋ผ python, c++ ๋ฑ ๋ค์ํ ์ธ์ด๋ก ๊ตฌํ ๊ฐ๋ฅ
3. YARN(Yet Another Resource Negotiator)

- ํ๋ก์์ ํด๋ฌ์คํฐ ์์์ธ ๋ฉ๋ชจ๋ฆฌ, Cpu ๋ฑ์ ๊ด๋ฆฌํ๊ณ ์์
์ ์ค์ผ์ค๋ง์ ๋ด๋นํ๋ค.
- ๊ตฌ์ฑ์์๋ Resource Manager, Node Manager, Application Master
- Resource Manager
- Master Node์์ ๋์
- ์ ์ฒด ํด๋ก์คํฐ์ ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ์์
์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ํ ๋น
- Node Manager
- Slave Node์์ ๋์
- ๊ฐ ๋
ธ๋์์ ์์ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๊ณ , Resource Manager๊ณผ ํต์ ํ์ฌ ์ํ๋ฅผ ๋ณด๊ณ
- Application Master
- ํน์ ์์
์ ๋ผ์ดํ์ฌ์ดํด(์์ฑ,์คํ,์ข
๋ฃ)๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ค
ํ๋ก์ ์ฅ์ ๋ฐ ๋จ์
์ฅ์
- ์คํ์์ค
- ํ์์ ๋ฐ๋ผ ๋
ธ๋ ์ถ๊ฐํ์ฌ ์ ์ฅ์์ ์ฒ๋ฆฌ ์ฉ๋ ํ์ฅ๊ฐ๋ฅ
- Fault Tolerance
- ๋ฐ์ดํฐ ๋ณต์ ๋ก ์ฅ์ ๋ฐ์ ์์๋ ๋ฐ์ดํฐ ์์ค ์์ด ์ด์ ์ง์๊ฐ๋ฅ
- ์ ๋ ดํ ๋ฆฌ๋
์ค ์๋ฒ๋ก ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ
๊ตฌ์ถ ๊ฐ๋ฅ
- ๋ฐฐ์น ์ฒ๋ฆฌ์ ์ต์ ํ
๋จ์
- HDFS์ ์ ์ฅ๋ ํ์ผ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ถ๊ฐ
- ๋ฐฐ์น ์์
์ ์ ํฉํ๊ธฐ์, ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ์์
์๋ ๋ถ์ ํฉ
ํ๋ก 1.0 vs. 2.0
ํ๋ก 1.0 ํน์ง ๋ฐ ํ๊ณ
- ํต์ฌ ๊ตฌ์ฑ ์์๋ก HDFS + Map-Reduce๋ก๋ง ๊ตฌ์ฑ๋จ
- ๋ชจ๋ ์์
์ด Map-Reduce์ ์ค์ฌ์ผ๋ก๋ง ์ด๋ค์ ธ ์ ์ฐ์ฑ์ด ๋ฎ์
- ์์ ๊ด๋ฆฌ ๋ฐ ์์
์คํ์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ์ธํด ๋ณ๋ชฉ ํ์ ๋ฐ์
ํ๋ก 2.0์ ๋ฑ์ฅ
์์ ๊ฐ์ 1.0์ ๋ณ๋ชฉ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด YARN์ ๋์
ํด, ์์ ๊ด๋ฆฌ์ ๊ณ์ฐ์ ๋ถ๋ฆฌํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํจ
ํ๋ก 2.0์ ์ฃผ์ ํน์ง
ํด๋ฌ์คํฐ ๊ด๋ฆฌ
- ๋ฆฌ์์ค ๋งค๋์ , ๋
ธ๋ ๋งค๋์ (์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์)
์์
๊ด๋ฆฌ
- Application Master
- ํน์ ์์
์ ๋ฆฌ์์ค ์๊ตฌ ์ฌํญ ๊ด๋ฆฌ ๋ฐ ํ์ํ Container ์์ฒญ
- Container
- ์์
์ด ์คํ๋๋ ๋จ์
- ์์
์ ์ฌ๋ฌ ๊ฐ ํ์คํธ๋ก ์ธ๋ถํ๋์ด, ๊ฐ๊ฐ์ ์ปจํ
์ด๋์์ ์คํ๋จ
๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ตฌ์กฐ ๊ฐ์
- ๋งต๋ฆฌ๋์ค์ ๋ถ๋ฆฌ๋ ์์๊ด๋ฆฌ
- YARN์ ๋งต๋ฆฌ๋์ค๋ฟ๋ง ์๋๋ผ, Spark, Tez์ ๊ฐ์ ๋ค์ํ ๋ถ์ฐ ์ปดํจํ
์์ง ์ง์
- ์ปจํ
์ด๋ ๊ธฐ๋ฐ ์ฒ๋ฆฌ
- ์์
์ด ์ปจํ
์ด๋ ์์์ ์คํ๋๋ฏ๋ก ๋ ์ ์ฐํ ์์ ์ฌ์ฉ ๊ฐ๋ฅํด์ง
ํ๋ก ๋์ ๊ณผ์
1. ํด๋ผ์ด์ธํธ ์์ฒญ
ํด๋ผ์ด์ธํธ๋ Application ์คํ ์์ฒญ๊ณผ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ Resource Manager์ ์ ์ถ
2. Application Master ์์ฑ
Resource Manager์ ์ ์ ํ Node maganer ์ ํํด Application Master ์์ฑ
3. Resource ์์ฒญ
Applicationn Master๋ Resource Manager์ container ํ ๋น ์์ฒญ์ ๋ณด๋
4. Container ์คํ
Resource Manager์ Node Manager์ container ์คํ ์ง์ ๋ด๋ฆผ
5. ์์
์คํ
์์
์ ๊ฐ container์์ ์คํ๋๊ณ , Application Master๊ฐ ์ํ ๊ด๋ฆฌ
6. ์์
์ข
๋ฃ
์์
์๋ฃ ํ, Application master๋ Resource Manager์ ๋ณด๊ณ ํ๊ณ ์์์ ํด์