Introduction to Hadoop - neozeus79/study GitHub Wiki
๋น ๋ฐ์ดํฐ๋ ๋ฌด์์ธ๊ฐ?
- ๋น
๋ฐ์ดํฐ์ 3๋ ์์
https://t1.daumcdn.net/cfile/tistory/125FFF3A50A709C41C
- ํฌ๊ธฐ(volumn)
- ์์ญ ํ ๋ผ๋ฐ์ดํธ, ํํ ๋ฐ์ดํธ
- ์๋(velocity)
- ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋ค์์ฑ(variety)
- ์ ํ (structured)
- ๋ฐ์ ํ (semi-structured)
- ๋น์ ํ (unstructured)
- ํฌ๊ธฐ(volumn)
ํ๋ก์ด๋ ๋ฌด์์ธ๊ฐ?
- google์ด ๋ฐํํ ๋ ผ๋ฌธ(Google File System, MapReduce)์ ๋๊ทธ์ปคํ ์ด ๊ตฌํํ ๊ฒฐ๊ณผ๋ฌผ
- ์คํ์์ค ๊ฒ์์์ง ๋์น(nutch)์ ์ ์ฉํ๊ธฐ ์ํด ์์
- 2008๋ ์ํ์น ์ต์์ ํ๋ก์ ํธ๋ก ์น๊ฒฉ
- ๋ถ์ฐ ํ์ผ ์์คํ HDFS(Hadoop Distributed File System)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ๋ถ์ฐ ์ฒ๋ฆฌ ์์คํ ์ธ MapReduce๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์
์ ํ๋ก์ธ๊ฐ?
-
Hadoop vs. RDBMS
- Hadoop
- ๋ผ์ด์ผ์ค ๋น์ฉ: ์คํ์์ค ํ๋ก์ ํธ์ฌ์ ์ํํธ์จ์ด ๋ผ์ด์ผ์ค ๋น์ฉ์ ๋ํ ๋ถ๋ด์ด ์์.
- scale-out
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์: ์ฌ๋ฌ๋์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๊ฐ ์๋ฒ์์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
- ์ฅ์ : ์ ๋ ดํ ๊ตฌ์ถ ๋น์ฉ, ๋น์ฉ ๋๋น ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฅ์ ๋ฅผ ๋๋นํ ํน์ฑ(๋ฐ์ดํฐ ๋ณต์ ๋ณธ ์ ์ฅ์ ํตํ ๋ฐ์ดํฐ ์ ์ค์ด๋ ์ฅ์ ๋ฐ์ ๋ ๋ฐ์ดํฐ ๋ณต๊ตฌ ๊ฐ๋ฅ)
- RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ์ ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ ์ฅํ๋๋ฐ ์ฉ์ดํ์ง๋ง, ์น๋ก๊ทธ์ ๊ฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ค์ RDBMS์ ์ ์ฌํ๊ธฐ์๋ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํผ
- ์์ฉ RDBMS ๊ฐ ์ค์น๋ ๊ณณ์ ๋๋ถ๋ถ ๊ณ ๊ฐ์ ์ฅ๋น์ฌ์ ๋ฌด์์ ์ฅ๋น๋ฅผ ๋๋ฆฌ๊ธฐ์๋ ๋น์ฉ ๋ฌธ์ ๊ฐ ์์
- ๋ผ์ด์ผ์ค ๋น์ฉ: ๋น์ฉ ๋ถ๋ด ์์.
- scale-up
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์: ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
- Hadoop
-
Haooop Ecosystem
- hadoop์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋ค์ํ ์๋ธ ํ๋ก์ ํธ ์ ๊ณต
- ์ฝ๋๋ค์ดํฐ: zookeeper
- ๋ฆฌ์์ค ๊ด๋ฆฌ: yarn, mesos
- ๋ฐ์ดํฐ ์ ์ฅ: Hbase, Mesos
- ๋ฐ์ดํฐ ์์ง: Chuckwa, Flume, Scribe, Sqoop, Hiho, Kafka
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ: Pig, Mahout, Spark, Impala, Presto, Hive, Tajo
- ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ: oozie. Airflow, Azkaban, Nifi
- ๋ฐ์ดํฐ ์๊ฐํ: Zepplin
- ๋ฐ์ดํฐ ์ง๋ ฌํ: Avro, Thrift
- hadoop์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋ค์ํ ์๋ธ ํ๋ก์ ํธ ์ ๊ณต
ํ๋ก์ ๋ํ ์คํด
- RDBMS๋ฅผ ๋์ฒดํ๋ค?
- ๋์ฒดํ๋ ๊ฒ์ด ์๋ ์ํธ ๋ณด์์ ์ธ ๊ด๊ณ
- ๋ถ์์ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ฑฐ์น๋ ETL๊ณผ์ ์ ๋์์ ์ค
- ํ๋ก์ ํธ๋์ ์
์ด๋ ๋ฌด๊ฒฐ์ฑ์ด ๋ฐ๋์ ๋ณด์ฅ๋์ด์ผ ํ๋ ์์คํ
(์ ํ ๊ตฌ๋งค, ์ธํฐ๋ท๋ฑ
ํน ๋ฑ...)์ ์ ํฉํ์ง ์์.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ์ค์ํ ๋ฐ์ดํฐ๋ ํธ๋์ ์ ๋ณ๋ก ๋ฌด๊ฒฐ์ฑ(์ผ๊ด์ฑ)์ ๋ณด์ฅํ๋ RDBMS์์ ์ฒ๋ฆฌ
- ๋ฐฐ์น์ฑ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์ ์ฅํ๋ ๊ฒ์ hadoop์์ ์ฒ๋ฆฌ
- ๋์ฒดํ๋ ๊ฒ์ด ์๋ ์ํธ ๋ณด์์ ์ธ ๊ด๊ณ
- ํ๋ก์ NoSQL์ด๋ค?
- RDBMS๊ฐ ์๋์ง๋ง, NoSQL๋ ์๋๋ค.
- ํ๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ญํ ์ ์ํํ๋ ๊ฒ์ ์๋.
- NoSQL?
- ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด๋ SQL๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (ํน์ ์ ์ฅ์)
- No SQL or Not Only SQL
- RDBMS๊ฐ ๋ถ์ฐ ํ๊ฒฝ์ ์ ํฉํ์ง ์์์ ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๊ณ ์๋ ๊ฒ
- RDBMS๊ฐ ์ํฐํฐ๊ฐ์ ๊ด๊ณ์ ์ค์ ์ ๋๊ณ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๋ฐฉ์์ด๋ผ๋ฉด,
- NoSQL์ ํค์ ๊ฐ์ ์์ผ๋ก๋ง ์ด๋ฃจ์ด์ง. ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌ๋์ด ๋ณ๋๋ก ์ด์๋จ. ์กฐ์ธ์ด ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์งํฉ๋ ํํ๋ก ์ ์ฅํจ(RBBMS๋ row ๋จ์), ์ค๋ฉ์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด ๋ค๋ฅธ ์๋ฒ์ ๋๋์ด ์ ์ฅ
- RDBMS๊ฐ ์๋์ง๋ง, NoSQL๋ ์๋๋ค.
Hadoop1 ๊ตฌ์ฑ ์์
HDFS (Hadoop Distributed File System)
- ํน์ง
- ์ฅ์ ๋ณต๊ตฌ
- ๋ฐ์ดํฐ ์ ์ฅ์ ๋ค๋ฅธ ์๋ฒ์ ๋ณต์ ๋ฐ์ดํฐ๋ ํจ๊ป ์ ์ฅํ์ฌ ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์ง
- ๋ถ์ฐ ์๋ฒ๊ฐ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋ฅผ ์ฒดํฌํ์ฌ ๋น ๋ฅธ ์๊ฐ์ ์ฅ์ ์ธ์ง(์ค๋ฅ์ ๋ถ์ฐ ์๋ฒ๊ฐ ๋คํธ์ํฌ ์ฐจ๋จ)
- ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ ๋ฐ์ดํฐ ์ ๊ทผ
- ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋น ๋ฅธ ์๊ฐ๋ด์ ์ฒ๋ฆฌํ๋ ๊ฒ ๋ณด๋ค ๋์ผํ ์๊ฐ์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
- HDFS๋ ๋๋ค ์ ๊ทผ ๋ฐฉ์(์์์ ์์น์์ ํ์ํ ๋ฐ์ดํฐ๋ง ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์) ๋์ ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ์ ์ ๊ทผ ํ๋๋ก ์ค๊ณ
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ
- ํ๋์ ํ์ผ์ด GB, TB ์ด์์ ํฌ๊ธฐ์ผ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ถ์ฐ ์ ์ฅํ์ฌ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ์ด ๊ฐ๋ฅํ๋๋ก ์ค๊ณ ๋จ.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ
- ํ๋ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ ์์ ๋ถ๊ฐ (2.0 ์ํ ๋ฒ์ ๋ถํฐ๋ ์ ์ฅ๋ ํ์ผ์ append ๊ฐ๋ฅ)
- ํ์ผ ์ด๋, ๋ณต์ฌ, ์ญ์ ํ ์ ์๋ ์ธํฐํ์ด์ค๋ ์ ๊ณต
- ์ฅ์ ๋ณต๊ตฌ
- HDFS ์ํคํ
์ณ
- ๋ธ๋ก ๊ตฌ์กฐ์ ํ์ผ ์์คํ
- 64MB์ ๋ธ๋ก(chunk)์ผ๋ก ๋๋์ด ๋ถ์ฐ๋ ์ฌ๋ฌ ์๋ฒ์ ๋๋์ด์ ์ ์ฅ (hadoop2 = 128mb)
- ์ฐธ๊ณ ) 64mb ์ด์ ? (์ฐธ๊ณ . ์ผ๋ฐ ๋์คํฌ ๋ธ๋ก ํฌ๊ธฐ = 4kb)
- ๋์คํฌ seek time ๊ฐ์
- ๋์คํฌ ํ์ ์๊ฐ์ ๋์คํฌ ์ ์ก ๋์ญํญ์ 1% ์ ๋๋ก ๋๋๋ก ๊ตฌ์ฑ
- ๋์คํฌ ํ์ ์๊ฐ = ๋ฐ์ดํฐ ์์น ์ฐพ๋ ์๊ฐ(seek time) + ๋ฐ์ดํฐ ์นํฐ์ ๋๋ฌํ๋ ์๊ฐ (search time)
- ์ผ๋ฐ์ ์ธ seek time = 10ms, ๋์คํฌ ์ ์ก ๋์ญํญ = 100mb/s
- ๋์คํฌ ํ์ ์๊ฐ์ ๋์คํฌ ์ ์ก ๋์ญํญ์ 1% ์ ๋๋ก ๋๋๋ก ๊ตฌ์ฑ
- ๋ค์๋
ธ๋๊ฐ ์ ์งํ๋ ๋ฉํ๋ฐ์ดํฐ์ ํฌ๊ธฐ ๊ฐ์
- ๋ฉํ๋ฐ์ดํฐ = ๋ธ๋ก์์น, ํ์ผ๋ช , ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ, ๊ถํ ์ ๋ณด ๋ฑ..
- ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๋ค ๋ณด๋ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์์ ๋ธ๋ก ํฌ๊ธฐ๋ฅผ ์๊ฒํ์ฌ ๋ธ๋ก์ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ์ ์ฅ ํ ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ค์ด๋ค๊ฒ ๋จ
- ํด๋ผ์ด์ธํธ์ ๋ค์๋ ธ๋์ ํต์ ๊ฐ์
- ๋์คํฌ seek time ๊ฐ์
- ๋ธ๋ก ๊ตฌ์กฐ์ ํ์ผ ์์คํ
- NameNode (master)
- ๊ธฐ๋ฅ
- ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ํ์ผ ์์คํ ์ด๋ฏธ์ง(ํ์ผ๋ช , ๋๋ ํ ๋ฆฌ, ํฌ๊ธฐ, ๊ถํ) + ํ์ผ ๋ธ๋ก ๋งตํ ์ ๋ณด
- ๋น ๋ฅธ ์๋ต์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ์ฌ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ๋
ธ๋ ๋ชจ๋ํฐ๋ง
- ๋ฐ์ดํฐ ๋ ธ๋๊ฐ ์ ์กํ๋ heartbeat๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ ๋ ธ๋ ์ํ, ์ฉ๋ ๋ชจ๋ํฐ๋ง
- ์ผ์ ๊ธฐ๊ฐ heartbeat๊ฐ ์์ ๊ฒฝ์ฐ ์ฅ์ ๋ฐ์ ์๋ฒ๋ก ํ๋จ
- ๋ธ๋ก ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ฉ๋์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ํด๋น ๋ฐ์ดํฐ ๋ ธ๋ ๋ธ๋ก์ ์ ๊ท ๋ฐ์ดํฐ ๋ ธ๋์ ๋ณต์ ํ์ฌ ๋ธ๋ญ ๋ณต์ ์๋ฅผ ๊ด๋ฆฌ ํจ.
- ํด๋ผ์ด์ธํธ ์์ฒญ ์ ์
- HDFS์ ์ ๊ทผํ๋ ค๋ฉด ๋ค์๋ ธ๋์ ๋จผ์ ์ ์
- ์กฐํ์ ๋ธ๋ก์ ์์น ์ ๋ณด ๋ฐํ, ์ ์ฅ์ ๊ธฐ์กด ํ์ผ ์ ์ฅ ์ฌ๋ถ์ ๊ถํ ํ์ธ ๊ฑฐ์ณ์ ์น์ธ
- ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ๊ธฐ๋ฅ
- DataNode (slave)
- ํด๋ผ์ด์ธํธ๊ฐ HDFS์ ์ ์ฅํ๋ ํ์ผ์ ๋ก์ปฌ ๋์คํฌ์ ์ ์ง
- ์ ์ฅ ํ์ผ ์ข ๋ฅ: ์ค์ ๋ฐ์ดํฐ, ๋ฉํ๋ฐ์ดํฐ(์ฒดํฌ์ฌ, ํ์ผ ์์ฑ์ผ์ ๋ฑ)
- ๋ค์๋ ธ๋์๊ฒ 3์ด๋ง๋ค Heartbeat ๋ฉ์ธ์ง ์ ์ก(๋ฐ์ดํฐ ๋ ธ๋ ์ํ ์ ๋ณด + ์ ์ฅ๋ ๋ธ๋ก ๋ชฉ๋ก)
- ํด๋ผ์ด์ธํธ๊ฐ HDFS์ ์ ์ฅํ๋ ํ์ผ์ ๋ก์ปฌ ๋์คํฌ์ ์ ์ง
MapReduce
-
Mapreduce๋?
- HDFS์ ์ ์ฅ๋ ํ์ผ์ ๋ถ์ฐ ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ ํ๋ ์์ํฌ
- ๊ฐ๋ฐ์: mapreduce ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํ
- Mapreduce Framework: ๋ฐ์ดํฐ ์ ์ก, ๋ถ์ฐ์ฒ๋ฆฌ, ๋ด๊ณ ์ฅ์ฑ(fault tolerance)๋ฑ์ ๋ณต์กํ ๋ถ๋ถ ์๋ ์ฒ๋ฆฌ
- HDFS์ ์ ์ฅ๋ ํ์ผ์ ๋ถ์ฐ ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ ํ๋ ์์ํฌ
-
MapReduce ์ํคํ ์ณ
- Client
- ์ฌ์ฉ์๊ฐ ์คํํ MapReduce ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์์ ์ ๊ณตํ๋ ๋งต๋ฆฌ๋์ค API ์๋ฏธ
- JobTracker
- client๊ฐ ํ๋ก์ผ๋ก ์คํ์ ์์ฒญํ๋ ๋งต๋ฆฌ๋์ค ํ๋ก๊ทธ๋จ์ Job์ด๋ผ๋ ํ๋์ ์์ ๋จ์๋ก ๊ด๋ฆฌ
- hadoop cluster์ ๋ฑ๋ก๋ ์ ์ฒด ์ก์ ์ค์ผ์ฅด์ ๊ด๋ฆฌ. ๋ชจ๋ํฐ๋ง
- ํ๋ก ํด๋ฌ์คํฐ ์ ์ฒด์์ ํ๋์ JobTrancker๊ฐ ์คํ๋๋ฉฐ, ๋ณดํต NameNode ์๋ฒ์์ ์คํ
- TaskTracker
- client๊ฐ ์์ฒญํ MRํ๋ก๊ทธ๋จ ์คํํ๋ ์ญํ ์ ํ๊ณ , Hadoop์ DataNode ์๋ฒ์์ ์คํ
- ๋์
- ์ฌ์ฉ์๊ฐ ์๋ก์ด Job ์์ฒญ ํ๋ฉด, ์ฒ๋ฆฌ์ ํ์ํ Map, Reduce ์คํ ๊ฐ์(slot ์) ๊ณ์ฐ
- ์ด๋ค TaskTracker์์ ์คํํ ์ง ๊ฒฐ์
- TaskTracker์ Job ํ ๋น
- TaskTracker๋ JobTracker์ ์์ ์ํ ์์ฒญ์ ๋ฐ์ ์์ฒญํ slot๊ฐ์ ๋งํผ Task ์์ฑํ๊ณ ์ ๊ท JVM ๊ตฌ๋ํด์ MRํ๋ก๊ทธ๋จ ์คํ
- JobTracker์ TaskTracker๋ HeartBeat ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋คํธ์ํฌ ํต์ ์ ํตํด Task์ ์ํ ์ ์์ ์คํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์
- TaskTracker ์ฅ์ ๋ฐ์ํ๋ฉด ๋ค๋ฅธ TaskTracker๋ฅผ ์ฐพ์์ ์ฌ์คํ
- Client
-
MapReduce DataFlow
- Map ๋จ๊ณ: ์
๋ ฅ ํ์ผ์ ํ์ค ์ฉ ์ฝ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณํ(Transformation)
- ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ๋ ํฌ๊ธฐ๋ก ๋ถ๋ฆฌ(input-split)
- ์ ์ฅ๋ ๋ธ๋ก์ ๋ค์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์๋(๊ฐ์๋ถ๋ฆฌ)
- input-split์ Map task์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ์ ๋ฌ
- MapTask๋ input-split์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ฝ๋ ๋จ์๋ก ๋งตํจ์ ์คํ
- MapTask ์ถ๋ ฅ ๋ฐ์ดํฐ๋ TaskTracker๊ฐ ์คํ๋๋ ๋ก์ปฌ ๋์คํฌ์ ์ ์ฅ๋จ.
- ์ถ๋ ฅ์ ์ถ๋ ฅํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
- HDFS์ ์ ์ฅ๋์ง ์๊ณ ๋ก์ปฌ ๋์คํฌ์ ์ ์ฅํ๋ ์ด์ ๋ ์ค๊ฐ๋ฐ์ดํฐ์ด๊ธฐ ๋๋ฌธ์ ์๊ตฌ ๋ณด๊ดํ ํ์ ์์ด์ ์ด๋ฉฐ, ์์ ์ด ์๋ฃ ๋๋ฉด ์ญ์ ๋จ
- Suffle ๋จ๊ณ : MapTask์ ์ถ๋ ฅ ๋ฐ์ดํฐ๊ฐ ReduceTask์๊ฒ ์ ๋ฌ๋๋ ์ผ๋ จ์ ๊ณผ์
- ํํฐ์ ๋๊ฐ ๋งต ์ถ๋ ฅ๋ ์ฝ๋์ ์ถ๋ ฅํค ํด์๊ฐ์ ๊ตฌํ๋ค.(default: hash(key) % reduce ๊ฐ์)
- ๊ฐ ํด์ฌ๊ฐ์ ๋ ์ฝ๋๊ฐ ์ํ๋ ํํฐ์ ๋ฒํธ๋ก ์ฌ์ฉ
- ํํฐ์ ์ ์คํํ ๋ฆฌ๋์ค ๊ฐ์๋งํผ ์์ฑ
- ํํฐ์ ๋๋ Map ์ถ๋ ฅ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ReduceTask์ ์ ๋ฌ
- ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ๋ชจ์ผ๋ ๊น์ง ๋๊ธฐํ๋ค๊ฐ ๋ชจ๋ ๋ชจ์ด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ณ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ๋ณํฉ
- ReduceTask๋ ๋ณํฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ์ฝ๋ ๋จ์๋ก ์ฝ์
- Reduce ๋จ๊ณ: ๋งต์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณ (Aggregation)ํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ ์ถ๋ ฅ ํ์ผ ์์ฑ
- ReduceTask๋ ์ฌ์ฉ์๊ฐ ์ ์ํ Reduceํจ์๋ฅผ ๋ ์ฝ๋ ๋จ์๋ก ์คํ
- ์ถ๋ ฅ ๋ฐ์ดํฐ๋ Reduce ๊ฐ์๋งํผ ํ์ผ ์์ฑ๋์ด HDFS์ ์ ์ฅ ๋จ.
- Map ๋จ๊ณ: ์
๋ ฅ ํ์ผ์ ํ์ค ์ฉ ์ฝ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณํ(Transformation)
Hadoop2
Yarn
- Yarn ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
- MapReduce ์ SPOF(Single Point of Failure, ๋จ์ผ ๊ณ ์ฅ์ ): JobTracker
- ํด๋ผ์ด์ธํธ๊ฐ job์ ์คํ ํ๋ ค๋ฉด ๋ฐ๋์ JobTracker๊ฐ ์คํ ์ค์ด์ด์ผ ํจ.
- JobTracker์ ๋ฉ๋ชจ๋ฆฌ ์ด์
- JobTracker๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ฒด ์คํ ์ ๋ณด ์ ์งํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ ์ ๋ณด๋ฅผ ์ ์ง ํ๋ค๋ณด๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํด์ JobTracker์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด Job ์ํ ๋ชจ๋ํฐ๋ง์ด ์ด๋ ต๊ณ , ์๋ก์ด Job์ ์คํ์ ์์ฒญ ํ ์ ์์.
- MapReduce ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฐฉ์ ๋ฌธ์
- MR์ slot(Map/Reduce slot)์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ํด๋ฌ์คํฐ์์ ์คํํ๋ Task ์ ๊ด๋ฆฌํ๋๋ฐ, Map์ด๋ Reduce๋ก ์์ ์ด ๋ชฐ๋ฆฌ๋ฉด ๋ค๋ฅธ ์์ ์ด ์ํํ์ง ๋ชปํด ์์ฌ ์์์ด ๋์ด ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋๋ค.
- ํด๋ฌ์คํฐ ํ์ฅ ํ๊ณ
- ์ต๋ ๋จ์ผ ํด๋ฌ์คํฐ๋ 4,000๊ฐ, ์ต๋ ๋์ Task ์๋ 40,000 ๊ฐ๊ฐ ํ๊ณ
- MapReduce ํ๋ ์์ํฌ๋ง ์ง์
- ๋ฒ์ ํต์ผ ์ ์ฝ
- MR job ์คํ์ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ์ MR ํด๋ฌ์คํฐ์ ๋ฒ์ ์ผ์น ํ์
- MapReduce ์ SPOF(Single Point of Failure, ๋จ์ผ ๊ณ ์ฅ์ ): JobTracker
- Yarn ๋ชฉํ
- JobTracker ์ฃผ์ ๊ธฐ๋ฅ ์ถ์ํ
- ํด๋ฌ์คํฐ resource ๊ด๋ฆฌ, Application life-cycle ๊ด๋ฆฌ๋ก ๊ธฐ๋ฅ ๋ถ๋ฆฌ
- ๋ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ Application ์์ฉ
- MR= MR API๋ก ๊ตฌํ๋ ํ๋ก๊ทธ๋จ๋ง ์์ฉ ๊ฐ๋ฅ
- Yarn= ์คํ ์์ฒญ Application ๋ชจ๋ ์์ฉ ๊ฐ๋ฅ. MR๋ Yarn์์ ์คํ๋๋ Application ์ผ๋ก ์ธ์
- JobTracker ์ฃผ์ ๊ธฐ๋ฅ ์ถ์ํ
- Yarn ํน์ง
- ํ์ฅ์ฑ
- ๋จ์ผ ํด๋ฌ์คํฐ ๊ท๋ชจ 10,000 ๋ ธ๋๊น์ง ํ์ฅ.
- ํด๋ฌ์คํฐ resource ํ์ฉ ๊ฐ์
- Resource Manager๋ผ๋ ์ ๊ท ์ปดํฌ๋ํธ ๊ฐ๋ฐํ์ฌ cpu, memory, disk, network ๋ฑ ์ค์ ๊ฐ์ฉ ๋จ์ ์์์ ๊ด๋ฆฌํ๊ณ ์คํ Application์ ์์ ๋ถ๋ฐฐ
- ์ํฌ๋ก๋ ํ์ฅ
- MR์ธ interactive ์ง์, ์ค์๊ฐ ์ฒ๋ฆฌ, ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ ๋ฑ ๋ค์ํ ์ํฌ๋ก๋ ํ์ ๊ฐ๋ฅ
- MapReduce ํธํ์ฑ
- hadoop1 ์์ ์ํ๋๋ MR ์ฝ๋๋ฅผ ์์ ์์ด ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
- ํ์ฅ์ฑ
- Yarn ์ํคํ ์ณ
-
์ฃผ์ ๊ธฐ๋ฅ
- Resource Manager
- ๊ธ๋ก๋ฒ ์ค์ผ์ฅด๋ฌ
- ์ ์ฒด ํด๋ฌ์คํฐ์์ ๊ฐ์ฉํ ๋ชจ๋ ์์คํ ์์ ๊ด๋ฆฌ
- ์คํ๋๋ application์ด ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด, ์ด๋ฅผ ์ ์ ํ๊ฒ ๋ถ๋ฐฐ. ๋ฆฌ์์ค ์ฌ์ฉ ์ํ ๋ชจ๋ํฐ๋ง
- Node Manager
- MR์ Task Tracker ์ญํ
- container ๋ฅผ ์คํํ๊ณ container life cycle ๊ด๋ฆฌ
- Container
- Node Manager๊ฐ ์คํ๋๋ ์๋ฒ์ ์์คํ ์์์ ํํ
- MR ์ด TaskTracker ์์ task ๋จ์๋ก ์คํ ๋์๋ค๋ฉด, Yarn ์์๋ NodeManager ์์ Container ๋จ์๋ก application ์คํ
- Application Master
- ํ๋์ Application ์ ๊ด๋ฆฌํ๋ Master ์๋ฒ
- Resource Manager
-
๋์
- client ๊ฐ Resource Manager ์๊ฒ Application ์คํ ์์ฒญ
- Resource Manager ๋ Node Manager๋ฅผ ํตํด Application Master ์คํ ์์ฒญ
- Application Master ๋ Resource Manager ์๊ฒ ์คํ ๊ฐ๋ฅํ container ์ ๋ณด ์์ฒญ
- Resource Manager์๊ฒ ์ ๋ฌ ๋ฐ์ container ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ํด๋น ์๋ฒ์ Node Manager ์๊ฒ Application ์คํ์ ์ํ container ์์ฑ ์์ฒญ
- Node Manager๋ container ์์ฑ ํ Application ์คํ
- Application ์คํ์ด ์๋ฃ ๋๋ฉด Application Master ์๊ฒ ์ ๋ฌ
- Application Master ๋ Resource Manager ์๊ฒ ๋ฆฌ์์ค ๋ฐํ ์์ฒญ
- Resource Manager๊ฐ ํด๋น ์๋ฒ์ Node Manager๋ฅผ ํตํด Container ๋ฆฌ์์ค ๋ฐํ