[Hadoop Study] vol 2. HDFS(Hadoop Distributed File System) ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ
Hadoop Study ์ด์ ๊ธ
2020/11/12 - [Data Science/Hadoop] - [Hadoop Study] vol 1. Hadoop์ด๋?
์ด๋ฒ ํฌ์คํ ์์๋ Hadoop์ ๊ตฌ์ฑ ์์ ์ค HDFS(Hadoop Distributed File System)์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
HDFS๋ File System ์ค ํ๋์ ๋๋ค. ๋ค๋ง, ์ ๋ง์ ์ปดํจํฐ๋ก ์ด๋ฃจ์ด์ง ํด๋ฌ์คํฐ์ ํ์ผ์ ๋ถ์ฐ ์ ์ฅํ ์ ์๋ Hadoop ๋ง์ถค ํ์ผ ์์คํ ์ ๋๋ค. ์ด๋ฌํ ์์คํ ์ด ํ์ํ ์ด์ ์ ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
HDFS Architecture
Hadoop์ DBMS๊ฐ ํ ๋์ ๋จธ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ณค๋ํด์ง๊ฒ ๋ฐฉ๋ํด์ง๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ถ์ฐ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. HDFS๋ ํด๋ฌ์คํฐ์ ํ์ผ์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๊ณ ์ด๋ฅผ ์ ์ ํ๊ฒ ๊ด๋ฆฌํด์ค๋๋ค. ์๋๋ HDFS์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ์ ๋๋ค.
HDFS๋ Name node, Data node, Client ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. Name node๋ HDFS ์ ๋ฐ์ ์ธ ๊ตฌ์ฑ ์ ๋ณด์ ๋ธ๋ก ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. Data node๋ ์ค์ ํ์ผ์ ์ ์ฅํ๋ ๊ณณ์ ๋๋ค. Client๋ ์ฌ์ฉ์๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์ผ๋ก HDFS์ ํ์ผ์ ์ฐ๊ฑฐ๋ ์ฝ๋ ์์ ์ ์์ฒญํฉ๋๋ค.
HDFS ํ์ผ ์ ์ฅ ๋ฐฉ์
HDFS๋ ํ์ผ์ ๋ถ์ฐ ์ ์ฅํ๊ธฐ ์ํด ๋จผ์ ํ์ผ์ ๋ฉํ ๋ฐ์ดํฐ์ ์ปจํ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ๋ฉํ ๋ฐ์ดํฐ๋ ํ์ผ์ ์ ๊ทผ ๊ถํ, ์์ฑ/์์ ์๊ฐ, name space ๋ฑ ํ์ผ์ ์ค๋ช ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์ปจํ ์ธ ๋ฐ์ดํฐ๋ ์ค์ ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋๋ค.
๋ฉํ๋ฐ์ดํฐ๋ Name node์ ์ ์ฅ๋๊ณ ์ปจํ ์ธ ๋ฐ์ดํฐ๋ ๋ธ๋ก ๋จ์๋ก ์ชผ๊ฐ์ ธ Data node์ ์ ์ฅ๋ฉ๋๋ค. ๋ธ๋ก์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ 128MB์ด๋ฉฐ ์ต์ 3๊ฐ์ ๋ณต์ฌ๋ณธ์ ์์ฑํ์ฌ ๋ถ์ฐ ์ ์ฅ๋ฉ๋๋ค.
๋ธ๋ก์ Data node์ ๋ถ์ฐ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ Name node๋ ํ ํ์ผ์ด ๋๋ ์ ์ฅ๋ ๋ธ๋ก ๋ฆฌ์คํธ์ ๊ทธ ๋ธ๋ก์ด ์ ์ฅ๋ ์์น๋ฅผ ๊ธฐ๋กํฉ๋๋ค. Data node ์ญ์ ๋ธ๋ก๊ณผ ํจ๊ป ๋ธ๋ก์ ๋ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
Name node
Name node์ ์ฃผ์ ์ญํ ์ ๋ฉํ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ Data node ๊ด๋ฆฌ์ ๋๋ค. ๋ํ, HDFS์ ํ์ผ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ์์ ์ ์์์ ์ญํ ์ ์ํํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ
๋ฉํ๋ฐ์ดํฐ๋ ํ์ผ์ด๋ฆ, ํ์ผํฌ๊ธฐ, ์์ฑ์๊ฐ, ์ ๊ทผ๊ถํ, ์์ ์ ๋ฐ ๊ทธ๋ฃน ์์ ์, ํ์ผ์ด ์์นํ ๋ธ๋ก์ ์ ๋ณด ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ๋ฐ์ดํฐ ๋ ธ๋์์ ์ ๋ฌํ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ ์ฒด ๋ ธ๋์ ๋ฉํ๋ฐ์ดํฐ ์ ๋ณด์ ํ์ผ ์ ๋ณด๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ์ ์ข ๋ฅ์๋ Fsimage ํ์ผ๊ณผ Edits ํ์ผ์ด ์์ต๋๋ค. Fsimage ํ์ผ์๋ name space์ ๋ธ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ Edits ํ์ผ์ ์์ฑ/์ญ์ ์ ๋ํ ํธ๋์ ์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ์ ์์ ์ฌํญ์ ๋ค์ ๊ตฌ๋์ ์ ์ฉํ๊ธฐ ์ํด ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
Data node ๊ด๋ฆฌ
๋งจ ์ฒ์ Data node๋ฅผ Name node์ ๋ฑ๋กํ ๋ handshake๋ฅผ ์ํํฉ๋๋ค. ๋ํ, Name node๋ Data node๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฌํ๋ heart beat(3์ด)์ ๋ธ๋ก๋ฆฌํฌํธ(6์๊ฐ)๋ฅผ ์ด์ฉํ์ฌ Data node์ ๋์ ์ํ, ๋ธ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- hand shake๋ฅผ ํตํด Name node๋ Data node๊ฐ ํต์ ์ด ๊ฐ๋ฅํ์ง ์ ์ ํ ์ํํธ์จ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค. ์ ํฉํ Data node์์ด ํ์ธ๋๋ฉด ์๋ณ๊ฐ๋ฅํ ๊ณ ์ id๋ฅผ ๋ถ์ฌํฉ๋๋ค.
- heart beat๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ ธ๋์ ๋์ ์ฌ๋ถ๋ฅผ ํ์ ํ๊ณ ๋ฌธ์ ๋ฐ์์ ์กฐ์นํฉ๋๋ค.
- ๋ธ๋ก๋ฆฌํฌํธ๋ฅผ ์ด์ฉํ์ฌ HDFS์ ์ ์ฅ๋ ํ์ผ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํฉ๋๋ค. ๋ธ๋ก๋ฆฌํฌํธ์๋ Data node์ ์ ์ฅ๋ ๋ธ๋ก ๋ชฉ๋ก๊ณผ ๊ฐ ๋ธ๋ก์ด ์ ์ฅ๋ ์์น์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
ํ์ผ ์ฝ๊ธฐ ์์
- ํด๋ผ์ด์ธํธ๋ Name node์ ํ์ผ์ name space์ ํด๋นํ๋ ๋ธ๋ก๋ค์ ๋ชฉ๋ก๊ณผ ์ฃผ์๋ฅผ ์์ฒญํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์์นํ Data node์์ ๋ธ๋ก์ ์ฝ์ด์ต๋๋ค.
ํ์ผ์ฐ๊ธฐ ์์
- ํด๋ผ์ด์ธํธ๋ Name node์๊ฒ ์ด๋ Data node์ ๋ธ๋ก์ ์ฐ๋ฉด ์ข์์ง ์์ฒญํฉ๋๋ค.
- Name node๊ฐ Data node๋ฅผ ํ ๋นํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ธ๋ก์ ์ฐ๊ธฐ ์ํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์์ฑํฉ๋๋ค.
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ด์ฉํด์ ๋ธ๋ก ์ฐ๊ธฐ ์์ ์ ์ํํฉ๋๋ค.
Data node
ํ์ผ์ ์ปจํ ์ธ ๋ฐ์ดํฐ๋ ๋ธ๋ก ๋จ์๋ก ๋๋๋ฉฐ, ํ๋์ ๋ธ๋ก์ ์ ์ด๋ 3๊ฐ์ ๋ณต์ฌ๋ณธ์ ์์ฑํฉ๋๋ค. Data node๋ ๊ทธ์ค ํ๋์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํฉ๋๋ค.
Name node Back up & Availability
์์ ๊ฐ์ด Name node๋ ๋งค์ฐ ์ค์ํ๊ณ ๋ง์ ์ญํ ์ ๋ด๋นํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ Name node์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ ์ฒด ์์คํ ์ ํฐ ํ๊ฒฉ์ ์ ์ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด, Image, Check point, Journal ๊ฐ๋ ์ ์ฌ์ฉํฉ๋๋ค.
image๋ ํ์ผ์ ๋ฉํ ์ ๋ณด๋ฅผ ๋ด์ inode์ ๊ฐ ํ์ผ์ ๊ตฌ์ฑํ๋ ๋ธ๋ก๋ค์ ๋ฆฌ์คํธ๋ฅผ ํฉ์ณ ์ง์นญํ๋ ๊ฐ๋ (์ค์ ๋ธ๋ก์ด ์ ์ฅ๋ ์์น ์ ๋ณด๋ ๊ณ์ ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ธ)์ ๋๋ค. ์ด๋ฌํ image๋ฅผ ๋์คํฌ์ ์ด ๊ฒ์ด check point์ ๋๋ค. journal์ image์ ๋ฐ์ํ ๋ชจ๋ ๋ณํ๋ค์ ๊ธฐ๋กํ ๋ก๊ทธ ํ์ผ์ ๋๋ค.
Name node๋ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฃผ๊ธฐ์ ์ผ๋ก check point๋ฅผ ์์ฑํฉ๋๋ค. Name node ์ฅ์ ๋ฐ์์, ๊ฐ์ฅ ์ต์ check point๋ฅผ ์ฝ์ด์จ ๋ค์ journal์ ์์ฐจ์ ์ผ๋ก ์คํ์์ผ ๋ณต์ํฉ๋๋ค. ๊ฒ์์์ check point์ ์์ฃผ ์ ์ฌํฉ๋๋ค. check point ์์ฑ์ด Name node์ ๋ถ๋ด์ด ๋ ์ ์์ผ๋ฏ๋ก ๋ณ๋์ ๋ฐฑ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ Name node์ ๋ถ๋ด์ ์ค์ฌ ์ฃผ๊ธฐ๋ ํฉ๋๋ค.
๊ทธ๋ผ์๋ ํ ๋์ Name node๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ฅ์ ์ ์ผ์ผํค๋ฉด ์ ์ฒด ํด๋ฌ์คํฐ๊ฐ ๋ฉ์ถ๊ฒ ๋ ์ํ์ฑ์ด ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Active/Standby ๊ตฌ์กฐ๋ก ์ด์๋ฉ๋๋ค.
ํ์ฌ ์คํ๋๋ Active Name node์ ์ฅ์ ์ Active๋ฅผ ๋์ ํ Standby Name node๋ฅผ ๋ง๋ จํ์ฌ Availability๋ฅผ ๋์ด๋ ๊ตฌ์กฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์ ๋ ธ๋ ์ญํ ์ ์ํํ๋ journal node๋ฅผ Name node์ ์ฐ๊ฒฐํฉ๋๋ค.
Block Placement
๋ธ๋ก์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ๊ฒ์ด๋๋ ํ์ผ์ availability, I/O performance ๋ฑ์ ๊ฒฐ์ ํ๋ ์ค์ํ ์ฌ์์ ๋๋ค. HDFS๋ ๋ ๋จ๊ณ์ ์ถ์ํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฐ๊ฐ์ Data node๋ค์ ํ๋์ rack(์๋ฒ ์ปดํจํฐ๋ค์ ๊ฝ์๋ฃ์ ์ผ์ข ์ ์ผ์ด์ค)์ ๋ฌถ์ ๋๋ค. ๊ฐ์ rack์ ๊ฝํ Data node๋ค์ ๊ฐ์ ๋คํธ์ํฌ ์ค์์น๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ rack์ ์ํ Data node๋ค ๊ฐ์ ๋คํธ์ํฌ ํต์ ์ด ๋น ๋ฆ ๋๋ค. ์ฌ๋ฌ ๊ฐ์ rack๋ค์ ์ฝ์ด ์ค์์น๋ก ๋ฌถ์ ๋๋ค. HDFS๋ ์ด๋ ๊ฒ ๋ฌถ์ฌ์๋ Data node๋ค์ ์๋์ ์์น์ผ๋ก ๋ธ๋ก replica(๋ณต์ ๋ณธ)๋ค์ ๋ถ์ฐ ์ํต๋๋ค.
- ํ๋์ Data node์๋ ๋ธ๋ก replica๋ฅผ ํ๋๋ง ์ ์ฅํฉ๋๋ค.
- ํ๋์ rack์๋ ๋ธ๋ก replica๋ฅผ ์ต๋ ๋ ๊ฐ๊น์ง๋ง ์ ์ฅํฉ๋๋ค.
์ด๋ฌํ ์์น์ ๋ฐ๋ผ ๋ธ๋ก์ ๋ถ์ฐํ ๊ฒฝ์ฐ availability๊ฐ ํ๋ณด๋ฉ๋๋ค. ํ๋์ Data node๋ rack์ด ๊ณ ์ฅ๋๋๋ผ๋ ์ฌ์ ํ ๋จ์ ๋ค๋ฅธ ๊ณณ์ ๋ธ๋ก replica๊ฐ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Balancer
Data node๋ค์ ์ด์ํ๋ค๋ณด๋ฉด unbalance ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ธฐ์กด Data node์ ๋์คํฌ ์ฉ๋๊ณผ ๋์ค์ ์ถ๊ฐํ Data node์ ๋์คํฌ ๊ณต๊ฐ์ ๊ท ํ์ด ๋ง์ง ์๋ ํ์์ ๋๋ค. ์ด๋ฅผ ์ํด, balancer ๋ชจ๋์ Data node๋ค์ ๋์คํฌ ์ฌ์ฉ๋์ ๋น์ทํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ ๊ท ํ์ ๋ง์ถฐ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ ๊ฐ์ฉ์ฑ์ ์ ํํ์ง ์๋๋ก ๊ฐ์ ๋ ธ๋์ ๋ replica๋ฅผ ์ ์ฅํ์ง ์๊ณ ๊ฐ์ rack์ ์ธ replica๋ฅผ ์ ์ฅํ์ง ์๋๋ก ์ต์ ํํด์ค๋๋ค.
๋ง์น๋ฉฐ
Hadoop์ ๊ตฌ์ฑ์์ ์ค ๋ถ์ฐ ์ ์ฅ ์์คํ ์ธ HDFS์ ๋ํด ์์๋ดค์ต๋๋ค. ๊ฐ๋ ์์ฒด๋ ์ด๋ ต์ง ์์ง๋ง ์์ ์ฑ ํ๋ณด๋ฅผ ์ํ ๊ตฌ์กฐ์ ๊ฐ๋ ์ด ๋ง๊ณ ๋ณต์กํฉ๋๋ค. ํธ๋ฆฌํ ์์ Tool๋ค์ ๊ธฐ๋ฐ์ด๋๋ ๊ฐ๋ ์ด๋ผ ํ์คํ ์์๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์ ํฌ์คํ ์ Map Reduce์ ๋ํด ์์๋ณผ ์์ ์ ๋๋ค.
Reference
hadoop.apache.org/docs/r3.0.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
'Data Engineering > Hadoop' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Hadoop Study] ํ์ด๋ธ(Hive) (1) - ํ์ด๋ธ ๊ตฌ์กฐ์ ์๋ ๊ณผ์ (0) | 2021.02.21 |
---|---|
[Hadoop Study] vol 3. ๋งต๋ฆฌ๋์ค(MapReduce) ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ (1) | 2021.01.10 |
[Hadoop Study] vol 1. Hadoop์ด๋? (2) | 2020.11.12 |
๋๊ธ