[hadoop] hadoop_1
in Hadoop
Hadoop
๋ถ๊ณผ 10๋ ์ ๋ง ํด๋ DB๊ฐ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ ์์ด ์์ฒ๋ง๊ฑด์ ๋ฌํ๋ฉด ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ค ์๋ค๊ณ ์๋ํ์ต๋๋ค.
2~3๋ ์ฌ์ด DB๊ฐ ๊ฐ๋นํด์ผ ํ ์ ๋ณด์ ์์ ๊ธ์๋๋ก ์ฆ๊ฐํ์ต๋๋ค.
์์ต ๊ฐ์ ๋ฌํ๋ ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ค ์์์ผํฉ๋๋ค.
ํ ์คํธ ์์ฃผ์ ์ ๋ณด๊ฐ ๊ณผ๊ฑฐ์ ๋ง์๋ ๋ฐ๋ฉด ์ด์ ๋ ๊ทธ๋ฆผ๊ณผ ๋์์ ์์ฃผ์ ์ ๋ณด๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
ํ ์คํธ ์ค์ฌ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ๊ทธ๋ฆผ๊ณผ ๋์์ ์์ฃผ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋นํ ์ ์์ต๋๋ค.
์ฒ์์๋ ์คํ ๋ฆฌ์ง๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๋์ด๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋นํ์ต๋๋ค.
DAS, NAS, SAN ๋ฑ์ ์คํ ๋ฆฌ์ง๋ฅผ ์ถ๊ฐํด๊ฐ๋ฉฐ ๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋นํ๊ณ , ์ด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฒ๋ฆฌํ์์ผ๋ ํ๊ณ์ ๋ถ๋ชํ์ต๋๋ค. ์คํ ๋ฆฌ์ง๋ง ๋๋ฆฐ๋ค๊ณ ํด์ ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ด ์๋์๊ธฐ ๋๋ฌธ์ ๋๋ค
๋์ฉ๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ(MPP; Massively Parallel Processing) ๋ฐฉ๋ฒ์ด ๋ฑ์ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๋๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ฐ ๋ถ๋ถ์ ๋์์ ์ํ์ํฌ ์ ์๊ฒ ํ์ต๋๋ค.ํ๋์ ํ๋ก๊ทธ๋จ์ ์ํํ๋๋ฐ ์๋ฐฑ ๋๋ ์์ฒ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ด์ฉํ ์ ์๊ฒ ํ์ต๋๋ค.๊ทธ๋ฌ๋ ์ฑ๋ฅ ๊ฐ์ ๋ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ํจ์จ์ ์ด์์ง๋ง ํญ์ฆํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ๋น์ฉ์ด ํจ์จ์ ์ด์ง ๋ชปํ์ต๋๋ค.๊ณ ๊ฐ์ด ๊ฐ๋นํ๊ธฐ์ ํฌ์ํ๋ ์๊ธ์ด ๋๋ฌด๋ ๋น์๋ ๊ฒ์ ๋๋ค
์ด๋ ํ์ฑ์ฒ๋ผ ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก ํ๋ก์ ๋๋ค.
ํ๋ก(hadoop)์ ๋์ฉ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๊ฐ๋ฐ๋ ์คํ์์ค ์ํํธ์จ์ด์ ๋๋ค.
(open-source software)
๊ตฌ๊ธ์ ๋ถ์ฐ ํ์ผ ์์คํ ๊ธฐ๋ฅ์ ํ๋ก ๋ถ์ฐ ํ์ผ ์์คํ (HDFS, Hadoop Distributed File System), ๊ตฌ๊ธ์ ๋งต๋ฆฌ๋์ค๋ ํ๋ก ๋งต๋ฆฌ๋์ค(Hadoop MapReduce), ๊ตฌ๊ธ์ ๋น ํ ์ด๋ธ์ Hbase๊ฐ ๊ฐ๊ฐ ๋ด๋นํ๊ณ ์์ต๋๋ค.
ํ๋ก์ ํต์ฌ ๊ตฌ์ฑ ์์์ธ ๋ถ์ฐ ํ์ผ ์์คํ ๊ณผ ๋งต๋ฆฌ๋์ค ์ด์ธ์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์์คํ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ํ๋ก ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์๋ฃจ์ ์ผ๋ก ํผ๊ทธ(Pig)์ ํ์ด๋ธ(Hive)๊ฐ ์์ต๋๋ค.
ํผ๊ทธ๋ ์ผํ์์ ๊ฐ๋ฐ๋์๋๋ฐ ํ์ฌ๋ ํ๋ก ํ๋ก์ ํธ์ ํฌํจ๋์ด ์์ต๋๋ค. ํผ๊ทธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌยท๋ณํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ ๊ณผ์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง๋ ํ๋ก๊ทธ๋จ ์ธ์ด์ ๋๋ค. ํ์ด๋ธ๋ ํ๋ก์ ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค(DW)๋ก ์ด์ํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฃจ์ ์ด๋ค ํจ์ด์ค๋ถ์์ ๊ฐ๋ฐํ ํ์ด๋ธ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉํ๋ SQL๊ณผ ์ ์ฌํ ์ง์ ์ธ์ด(querry language)์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋งต๋ฆฌ๋์ค๋ ์ฝ๊ฒ ๋งํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์์ผ ์ฒ๋ฆฌํ ๋ค ํ๋๋ก ํฉ์น๋ ๊ธฐ์ ์ ๋๋ค.
ํ๋ก์ MPP์ ๋ฌ๋ฆฌ ์ฌ์ฉ์ด ํธ๋ฆฌํ๋ค - ๊ฐ๋ฐ์๋ค์ด ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์ํค๊ณ ํฉ์น๋ ์ผ์ ํ ํ์ ์์ด ํ๋ก์ ๋งต๋ฆฌ๋์ฑ ๊ธฐ์ ์ด ์ด๋ฅผ ์๋์ ์ผ๋ก ์ง์
โํ๋ก ์์ฝ์์คํ โ์ด ๋ฑ์ฅ
๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ NoSQL, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ HBase, SQL๊ณผ ๋น์ทํ ์ฟผ๋ฆฌ๋ก ๋ถ์์ ์ํํ ์ ์๋ Hive์ Pig, ๊ทธ๋ฆฌ๊ณ ๋ถ์ฐ ๊ด๋ฆฌ ์์คํ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ Zookeeper ๋ฑ์ด ํฌํจ๋์ต๋๋ค.
๋น์ผ ์ฅ๋น๋ฅผ ๋์ ํด ๋น ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ํ์๊ฐ ์๋ ์ค์๊ธฐ์ ์ ์ค์ฌ์ผ๋ก ํ๋ก ์ฌ์ฉ์ด ์ฆ๊ฐํ์ต๋๋ค
IBM, ์ค๋ผํด, ํ ๋ผ๋ฐ์ดํ ๊ฐ์ ๋ถ์ ์ ๋ฌธ ์๋ฃจ์ ์ ์ฒด๋ค์ ๋น ๋ฐ์ดํฐ ๋ถ์์ ์๋ฃจ์ ์ฌ์ฉ ๋น์ฉ, ์๋ฒ ๋น์ฉ ๋ฑ ์์ฒญ๋ ์ด๊ธฐ ์๋ณธ๊ธ์ ์๊ตฌํ์ต๋๋ค
ํ์์ ์ผ๋ก ์์ค๋ฅผ ์ ๊ณตํด ํ๋ฒ ๋์ ํ ์ดํ์๋ ๋ค๋ฅธ ๋์์ผ๋ก ์ฎ๊ฒจ๊ฐ๊ธฐ ์ฝ์ง ์๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค
๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ๊ฐํธํ๊ณ , ํธ๋ฆฌํ๊ณ , ๋น ๋ฅด๊ฒ ๋ถ์ํ ๋งํ ๊ธฐ์ ๋ก ํ๋ก ๋งํ ๊ฒ ์์ต๋๋ค
ํ๋ก์ ํตํด ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉด ์์ ์ฑ ๋ฉด์์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ฉํ ๋ถ์๋ณด๋ค ๋จ์ด์ง๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 99.9999%์ ๊ณ ๊ฐ์ฉ์ฑ์ ์๋ํ๋ค๋ฉด, ํ๋ก์ 99.99%์ ๊ณ ๊ฐ์ฉ์ฑ์ ์๋ํฉ๋๋ค. ์์์ ์ฐจ์ด์ง๋ง ์ด ์ฐจ์ด๋ ๊ธ์ต๊ถ ๋ฑ ์ค์ํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ๋ ๊ธฐ์ ๋ค์๊ฒ๋ ๊ฝค ์ค์ํ ์๋ฏธ๋ก ๋ค๊ฐ๊ฐ๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ค์ ํ๋ก์ ์ธ๋ฉดํ๊ธฐ ์ด์ ์ ํ๋ก์ ํ์ด ์๋กญ๊ฒ ๊ณ ๊ฐ๋ค์ ๊ณต๋ตํ๊ธฐ๋ก ๋ง์์ ๋ฐ๊ฟจ์ต๋๋ค.
ํ๋ก์ IBM DB2, EMC ๊ทธ๋ฆฐํ๋ผ, ์ค๋ผํด ๋น ๋ฐ์ดํฐ ์ดํ๋ผ์ด์ธ์ค ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ค์ด ์ถ์ํ๋ ๊ฑฐ์ ๋ชจ๋ ์ ํ์ ์ ์ฉ๋์ต๋๋ค.
๊ฐ์ โ ํ๋ก์ ์ฐ๊ฒ ๋ ์ด์
: 10TBํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ํ
ํ๋ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ์. ์ด๋ฅผ ํ ๋์ ์๋ฒ์์ ์ํ
ํ๋ ค๋ฉด 2~3์ผ์ ๋ ๊ฑธ๋ฆด๊ฒ์ด๋ค. ์ด๋ ์๋ฒ ํ๋๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ท๋ชจ์ด๋ค. ๋ฐ๋ผ์ 100๋ ์๋ฒ๋ฅผ ๊ฐ์ง๊ณ ํ๋ก ํด๋ฌ์คํฐ๋ก ์ฒ๋ฆฌํ๋ฉด 30~40๋ถ์ด๋ฉด ์ถฉ๋ถํ๋ค. ์ฆ, ํ๋ก์ ๋์ฉ๋ ๋ฐ์ดํฐ ๋ถ์ฐ์ฒ๋ฆฌ ํ๋ ์์์ด๋ค.
Q. ์ ๊ตณ์ด ํ๋ก ํด๋ฌ์คํฐ๋ก ์ฒ๋ฆฌํ๋? ๊ธฐ์กด์ Oracle๊ฐ์ DBMS๋ถ์ฐ์ฒ๋ฆฌ๋ก๋ ์๋๋?
์ค๋ผํด ๊ฐ์ RDBMS๋ ๋ถ์ฐ ํ๊ฒฝ์ ์ผ๋์ ๋์ง ์๊ณ ํ ๋์ ์๋ฒ๋ง์ ์๊ฐํด์ ๋ง๋ค์ด์ง ์ํํธ์จ์ด์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฐ ์ํํธ์จ์ด๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ฉ๋์ ๋๋ฆด๋ ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค๋์ง CPU๋ ๋์คํฌ๋ฅผ ๋ ์ฅ์ฐฉํ๋ ๋ฐฉ์์ผ๋ก ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค. ์ด๋ฐ ๋ฐฉ์์ ์ค์ผ์ผ์
(Scale-Up)์ด๋ผ๊ณ ํ๋ค.
Q. RDBMS๋ค์ ์ฑ๋ฅ ํฅ์ ๊ธฐ๋ฒ์ด ์ค์ผ์ผ์ ์ด๋ผ๋ฉด ํ๋ก์?
ํ๋์ ์๋ฒ์ ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ๋ถ์ฌ์ ์ฉ๋์ ํค์ฐ๋ ๊ฒ์ด ์๋๋ผ ์๋ฒ ์์ฒด๋ฅผ ๋ ์ถ๊ฐํจ์ผ๋ก์จ ์ ์ฒด ์์คํ
์ ์ฉ๋์ ํค์ฐ๋ ๋ฐฉ์์ ์ค์ผ์ผ์์(Scale-out) ์ด๋ผํ๋ค. NoSQL์ด๋ ํ๋ก ๋ฑ์ ๋ถ์ฐ ํ๊ฒฝ ์์คํ
์์ ์์คํ
์ ์ฉ๋์ ์ฆ๋์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค. ์ค์ผ์ผ์
์ฒ๋ผ ๊ณ ๊ฐ์ ์ฅ๋น๋ณด๋ค๋ ์ ๊ฐ์ ์ฅ๋น๋ฅผ ์ฌ๋ฌ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ฃผ๋ก ํํ๋ค.
๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์ ์ฒด์ ์ธ ๊ตฌ์ฑ
๋น ๋ฐ์ดํฐ๊ฐ ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ HDFS(Hadoop Distributed File System)๊ณผ MapReduce๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ ์ํ ๋๊ตฌ์ธ NoSQL๋ก ๊ตฌ์ฑ๋๋ค.
Q. R์ด๋๊ฑธ ๋ค์ด๋ดค๋๋ฐ R์ ๊ทธ๋ผ ๋ฌด์์ธ๊ฐ์?
R์ ๋ฐ์ดํฐ ์๊ฐํ ๋ชจ๋์ด๋ค. ์ฒ๋ฆฌ ๋ชจ๋์ ํตํด ๋ถ์๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ ํด์ฃผ๊ธฐ ์ํ ๋ชจ๋์ด๋ค. ์ฃผ๋ก ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋ ํด์ ๋ฐ์ดํฐ์ ํน์ฑ์ ํ์
ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ฅ/์ฒ๋ฆฌ ๋ชจ๋ (HDFS & MapReduce)
๋น ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ์ญํ ์ ๋ด๋นํ๋ ๊ฒ์ด ๋น ๋ฐ์ดํฐ ์์คํ ์ ํต์ฌ ๋ธ๋ ์ธ์ด๋ผ๊ณ ํ ์ ์๋ ํ๋ก์ด๋ค.
ํ๋ก์ ํฌ๊ฒ ๋๊ฐ์ง ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ค.
HDFS โ ํ๋ก ๋ถ์ฐ ํ์ผ ์์คํ
MapReduce โ ๋ถ์ฐ ์ฒ๋ฆฌ ์์คํ
์์ ์์ง๋ ๋ฐ์ดํฐ๋ค์ด HDFS์ ์ ์ฅ๋๊ณ HDFS์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ค์ MapReduce ๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค.
ํ๋ก์ ๋์ฉ๋ ๋ฐ์ดํฐ์ ๋ฐฐ์น ํ๋ก์ธ์ฑ์ ์ํ ๋ชจ๋์ด๋ค.
์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ฉ๋๊ฐ ์๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ธฐ ์ํด์๋ ํ๋ก์์ ๋์ฉ๋ ๋ฐฐ์น ํ๋ก์ธ์ฑ ํ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๋ถ์์ฉ ํด์ ์ด์ฉํ์ฌ์ผ ํ๋ค.
๋ฐ์ดํฐ ๋ถ์ ๋ฐฉ๋ฒ์๋ ๊ธฐ์กด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก์ผ๋ก ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์๋ค๋ฉด RDBMS์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ค.
NoSQL
์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฐ์ดํฐ์์ ํ๋ก์ผ๋ก ์ฒ๋ฆฌ๋์ด ๋ง๋ค์ด์ง ๋ฐ์ดํฐ๋ ๊ทธ ํฌ๊ธฐ๊ฐ ๊ต์ฅํ ํฌ๋ฉฐ ์คํค๋ง๊ฐ ๊ณ ์ ๋์ด์์ง ์๋ ๋ฑ ๊ธฐ์กด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํฉํ์ง ์๋ค.
NoSQL์ด ์๋ฏธํ๋ฏ์ด No Structured Query Language ์ฆ, ์ ํํ๋ RDBMS์ ํ ์ด๋ธ ํ์์ด ์๋ ๋ฐ์ดํฐ ํ์์์ ๋ฐ์ดํฐ๋ฅผ CRUDํ๊ณ ์ถ์ ๊ฒฝ์ฐ NoSQL์ ์ฌ์ฉํ๋ค.
๋ถ์ฐํ๊ฒฝ์ ์ํด ์ค๊ณ๋์๋ค.
๊ธฐ์กด์ RDBMS๋ณด๋ค ์ฒ๋ฆฌํ ์ ์๋ ์์ด๋ ํธ๋ํฝ์ด ํจ์ฌ ๊ฑฐ๋ํ๋ค.
MongoDB, HBase, Cassandra ๋ฑ์ด ์๋ค.
์ฃผ๋ก ๋น ๋ฐ์ดํฐ ์์คํ ์ฒ๋ฆฌ/๋ถ์์ ์ํด ํ๋ก๊ณผ NoSQL์ ์ฌ์ฉํ๋ค.
๊ฒ์์์ง RDBMS๋ NoSQL์ฒ๋ผ ํค/๋ฐธ๋ฅ์ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ๋ณด๋ค ๋ ๋ณต์กํ ํํ๋ก ๋ฐ์ดํฐ์ ์ก์ธ์คํ์ฌ์ผ ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
๊ฒ์์์ง ์คํ์์ค ํ๋ก์ ํธ๋ก๋ Lucene, Solr, ElasticSearch๊ฐ ์๋ค.
ํ๋ก์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ์ฉํ ๋ํ์ ์ธ ์ฌ๋ก๋ก๋ ใ๋ด์ํ์์คใ๊ฐ ์์ต๋๋ค. ใ๋ด์ํ์์คใ๋ 1851๋ ๋ถํฐ 1980๋ ๊น์ง์ ๊ธฐ์ฌ 1100๋ง ๊ฑด์ PDF๋ก ๋ณํํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ฉด์ ํ๋์จ์ด์ ์ํํธ์จ์ด๋ฅผ ์ ๊ท๋ก ๊ตฌ๋งคํ๋ ๋์ ์๋ง์กด EC2์ S3, ๊ทธ๋ฆฌ๊ณ ํ๋ก(Hadoop) ํ๋ซํผ์ ํ์ฉํ์ต๋๋ค.
ํ๋ฃจ๋ง์ ์์ ์ ์๋ฃํ๊ณ ์ง๋ถํ ๋น์ฉ์ 1450๋ฌ๋ฌ์ ๋ถ๊ณผํ์ต๋๋ค
ํ๋ก์ ๊ณต๊ฐ์ฉ ์ํํธ์จ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฌด๋ฃ๋ก ์ด์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
ํ์ฌ ์ธํฐ๋ท ํ๊ฒฝ์์ ์คํ์์ค๋ก ์ ๊ณต๋๋ ๊ฐ๋ฐ ๋๊ตฌ๋ก๋ LAMP(Linux, Apache, MySQL, PHP/Python)๊ฐ ์์ต๋๋ค. ์ด์์ฒด์ ์ธ ๋ฆฌ๋ ์ค(Linux), ์น ์๋ฒ์ธ ์ํ์น(Apache), ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ MySQL, ๊ฐ๋ฐ์ธ์ด์ธ PHP/Python์ ์ฌ์ฉํ๋ฉด ์ ๋ ดํ ๋น์ฉ์ผ๋ก ์์คํ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค
* ์ค์น
1.VMware 12 ์ค์น
2.C:\hadoop์ ํด๋ CentOS_master ์์ฑ
3.๋ฆฌ๋ ์ค ์ค์น
4.VMware Tool
5.JDK
http://java.oracle.com
๊ฐ. hadoop ๊ณ์ ๋ก๊ทธ์ธ
๋. Firefox์ด๊ณ JDK ๋ค์ด๋ก๋ - ์ ์ฅ
๋ค. /home/hadoop/๋ค์ด๋ก๋ ํด๋์ ์ ์ฅ๋๋ค
๋ผ. JDK ์ค์น๋ ์์ถ๋ง ํ๋ฉด ๋ฉ๋๋ค
root๊ณ์ ์ผ๋ก ์์ถํ๊ณ hadoop ์ฌ์ฉ์์๊ฒ ์ฝ๊ธฐ ๊ถํ์ ์ค์ผ ํฉ๋๋ค
[hadoop@localhost ๋ฐํํ๋ฉด]$ su -
์ํธ:
[root@localhost ~]# cd /usr/local
[root@localhost local]# pwd
/usr/local
[root@localhost local]# tar -xvf /home/hadoop/๋ค์ด๋ก๋/jdk-8u15 1-linux-x64.tar.gz
[root@localhost local]# ls -l /usr/local - ์ค์น๋์๋ ํ์ธ
[root@localhost local]# chown -R hadoop:hadoop /usr/local/jdk1.8.0_111/
6.Eclipse
http://www.eclipse.org
๊ฐ. hadoop ๊ณ์ ๋ก๊ทธ์ธ
๋. Firefox์ด๊ณ Eclipse ๋ค์ด๋ก๋ - ์ ์ฅ
๋ค. /home/hadoop/๋ค์ด๋ก๋ ํด๋์ ์ ์ฅ๋๋ค
๋ผ. Eclipse ์ค์น๋ ์์ถ๋ง ํ๋ฉด ๋ฉ๋๋ค
root๊ณ์ ์ผ๋ก ์์ถํ๊ณ hadoop ์ฌ์ฉ์์๊ฒ ์ฝ๊ธฐ ๊ถํ์ ์ค์ผ ํฉ๋๋ค
[root@localhost local]# pwd
/usr/local
[root@localhost local]# ls -l /home/hadoop/๋ค์ด๋ก๋
[root@localhost local]# tar -xvf /home/hadoop/๋ค์ด๋ก๋/eclipse-java-neon-2-linux-gtk-x86_64.tar.gz
[root@localhost local]# ls -l /usr/local - ์ค์น๋์๋ ํ์ธ
[root@localhost local]# ls -l ./eclipse/
[root@localhost local]# chown -R hadoop:hadoop /usr/local/eclipse/
7.Hadoop
http://archive.apache.org/dist/hadoop/common/
๊ฐ. hadoop ๊ณ์ ๋ก๊ทธ์ธ
๋. Firefox์ด๊ณ hadoop ๋ค์ด๋ก๋ - ์ ์ฅ
๋ค. /home/hadoop/๋ค์ด๋ก๋ ํด๋์ ์ ์ฅ๋๋ค
๋ผ. hadoop ์ค์น๋ ์์ถ๋ง ํ๋ฉด ๋ฉ๋๋ค
root๊ณ์ ์ผ๋ก ์์ถ ํ๊ณ hadoop ์ฌ์ฉ์์๊ฒ ์ฝ๊ธฐ ๊ถํ์ ์ค์ผ ํฉ๋๋ค
[root@localhost local]# pwd
/usr/local
[root@localhost local]# ls -l /home/hadoop/๋ค์ด๋ก๋
[root@localhost local]# tar -xvf /home/hadoop/๋ค์ด๋ก๋/hadoop-2.7.3.tar.gz
[root@localhost local]# ls -l ./hadoop-2.7.3/
[root@localhost local]# chown -R hadoop:hadoop hadoop-2.7.30/
8.CentOS OpenJDK ์ญ์
๊ด๋ฆฌ์ ๋ชจ๋์์ ์คํํด์ผ ํ๋ค
[root@localhost local]# pwd
/usr/local
[root@localhost local]# java -version
๊ฐ. ์ค์น๋์ด ์๋ OpenJDK ํ์ผ๋ช ์ด ๋์จ๋ค
\# rpm -qa | grep jdk
java-1.7.0-openjdk-1.7.0.51-2.4.4.1.el6_5.x86_64
๋. ๋ํ๋๋ ํ์ผ๋ช ์ ๋ณต์ฌ ํ
# yum remove java-1.7.0-openjdk-1.7.0.51-2.4.4.1.el6_5.x86_64
๋ค. OpenJDK๋ฅผ ๋ค ์ง์ฐ๋ฉด ์๋ฌ๊ฐ ๋ฌ๋ค
[root@localhost local]# java -version
-bash: /usr/bin/java: ๊ทธ๋ฐ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค
๊ทธ๋ฌ๋ฉด JDK, ํ๋ก ๊ฒฝ๋ก๋ฅผ ๋ฑ๋กํ๊ธฐ์ํด .bash_profile์ ๋ด์ฉ์ ์ถ๊ฐํด์ผ ํ๋ค
9.bashrc ํ๊ฒฝ์ค์
.bash_profile ํ์ผ์ ๋ชจ๋ ๋ ธ๋์ ๋์ผํ๊ฒ ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
[hadoop@localhost ๋ฐํํ๋ฉด]$ cd
[hadoop@localhost ~]$ pwd
/home/hadoop
[hadoop@localhost ~]$ java -version
bash: java: command not found
[hadoop@localhost ~]$ cat .bash_profile
[hadoop@localhost ~]$ vi .bash_profile ( I๋ ์
๋ ฅ ) (esc -> : -> q! or wq)
export PATH=$PATH:$HOME/bin
export JAVA_HOME=/usr/local/jdk1.8.0_121
export HADOOP_INSTALL=/usr/local/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_INSTALL/bin
๊ตฌ๋ถ์ :
[hadoop@localhost ~]$ source .bash_profile
[hadoop@localhost ~]$ hadoop version
[hadoop@localhost ~]$ java -version
[hadoop@localhost ~]$ javac -version
10.ipํ์ธ
/root์์ /etc/hosts ์ค์
๋ ๋์ ํธ์คํธ๋ก ํ ์คํธ ํ ์ ์๋ค
๋จผ์ ์์ ์ IP๋ถํฐ ํ์ธ ํ๋ค
[hadoop@localhost ๋ฐํํ๋ฉด]$ su -
์ํธ:
[root@localhost ~]# ifconfig
[root@localhost ~]# vi /etc/hosts:
[root@localhost ~]#
192.168.121.133 master
192.168.111.128 backup
192.168.111.129 slave1
192.168.111.128 slave2
๋ ๋์ ํธ์คํธ๋ก ํ ์คํธํ๋ค
ํธ์คํธ 1 : master, backup, slave2
ํธ์คํธ 2 : slave1
[root@master ๋ฐํํ๋ฉด]$ ping slave1
11.๋ฐฉํ๋ฒฝ ์ค์ โ iptables
[hadoop@master ๋ฐํํ๋ฉด]$ su -
[root@master ~]# vi /etc/sysconfig/iptables
\# Firewall configuration written by system-config-firewall
\# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
โ /16-> 192.168๋ง ๊ณ ์ ํ๊ฒ ๋ค.
-A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
-A OUTPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
โ ๋ฐฉํ๋ฒฝ ๊ณ ์ณค์ผ๋ ์ฌ์์
[root@master ~]# service iptables restart iptables ์ ์ฉ
iptables: ์ฒด์ธ์ ACCEPT ๊ท์น์ผ๋ก ์ค์ ์ค : filter [ OK ]
iptables: ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ง์๋๋ค: [ OK ]
iptables: ๋ชจ๋์ ์ธ๋ก๋ํ๋ ์ค: [ OK ]
iptables: ๋ฐฉํ๋ฒฝ ๊ท์น ์ ์ฉ ์ค: [ OK ]
[root@master ~]# ping slave1
12.ssh rsaํค๋ฅผ ์ด์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์์ด ๋ก๊ทธ์ธํ๊ธฐ
์๋ก ๊ฐ์ ๊ฒ์ฆ๋ ํค(authorized_key, ์ํธ)๋ฅผ ๋ฏธ๋ฆฌ ์ฃผ๊ณ ๋ฐ์ ssh ์ ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ง ์๊ณ ๋ฐ๋ก ์ ์ํ๋ ๋ฐฉ์์ ๋งํ๋ค
๋ํ authorized_key๋ฅผ ์ฃผ๊ณ ๋ฐ์ง ์์ ๋ค๋ฅธ ๊ณ์ ์ ์ ์ํ์ง ๋ชปํ๋๋ก ํ์ฌ ๋ณด์์ฑ์ ๋์ผ ์ ์๋ค
authorized_key๋ ๊ถํ์ 644๋ก ์์ ํ๋ค
๋ชจ๋ ๋ ธ๋์ ์์ฑ ํ๋ค
๊ฐ. ๋จผ์ ๊ณต๊ฐํค๋ฅผ ์์ฑํ๋ค
[hadoop@master ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
c2:69:3b:36:4d:4f:bc:18:df:3f:b0:00:02:f1:38:25 hadoop@master
The key's randomart image is:
+--[ RSA 2048]----+
| E.. |
| .= |
| o.. |
| o.... |
| =.S.o |
| . = *.o. |
| = o +..o |
| . o ... |
| .. |
+-----------------+
๋. .ssh๊ฐ ์๋ ํ์ธ
[hadoop@master ๋ฐํํ๋ฉด]$ cd /home/hadoop
[hadoop@master ~]$ ls -la (.ssh ๋ง ์๋ ํ์ธ)
[hadoop@master ~]$ cd .ssh
[hadoop@master .ssh]$ ls -l
ํฉ๊ณ 12
-rw-------. 1 hadoop hadoop 1675 2014-12-23 11:46 id_rsa //๊ฐ์ธํค
-rw-r--r--. 1 hadoop hadoop 394 2014-12-23 11:46 id_rsa.pub //๊ณต๊ฐํค
๋ค. master ๊ณต๊ฐํค๋ฅผ authorized_keys์ ์ถ๊ฐ
[hadoop@master .ssh]$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
[hadoop@master .ssh]$ ls -l
ํฉ๊ณ 16
-rw-r--r--. 1 hadoop hadoop 394 2014-12-23 11:50 authorized_keys
-rw-------. 1 hadoop hadoop 1675 2014-12-23 11:46 id_rsa
-rw-r--r--. 1 hadoop hadoop 394 2014-12-23 11:46 id_rsa.pub
๋ผ. slave1์์๋ ๊ฐ์ธํค/๊ณต๊ฐํค ์์ฑ
[hadoop@slave1 ~]$ ssh-keygen -t rsa
๋ง. slave1 ๊ณต๊ฐํค๋ฅผ master์ authorized_keys ํ์ผ์ ์ถ๊ฐ
backup, slave2์ ๊ณต๊ฐํค๋ ์ถ๊ฐํ๋ค
[hadoop@master .ssh]$ ssh hadoop@slave1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'slave1 (192.168.164.131)' can't be established.
RSA key fingerprint is 8e:6b:98:d8:cd:c2:a4:00:25:ea:32:28:02:76:ba:b9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave1,192.168.164.131' (RSA) to the list of known hosts.
hadoop@slave1's password:
[hadoop@master .ssh]$ ssh hadoop@backup cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@master .ssh]$ ssh hadoop@slave2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
๋ฐ. ๋ชจ๋ node์ ๊ณต๊ฐํค ์ฌ๋ถ๋ฐฐ ํ๋ค
๋ชจ๋ ๋ ธ๋์์ ์๋ก์ ๊ณต๊ฐํค๋ฅผ ๊ณต์ ํ๋ค.
[hadoop@master .ssh]$ scp authorized_keys hadoop@slave1:~/.ssh/
[hadoop@master .ssh]$ scp authorized_keys hadoop@backup:~/.ssh/
[hadoop@master .ssh]$ scp authorized_keys hadoop@slave2:~/.ssh/
[hadoop@master .ssh]$ ssh-add //master์์๋ง ํด์ฃผ๋ฉด ๋๋ค
Identity added: /home/hadoop/.ssh/id_rsa (/home/hadoop/.ssh/id_
rsa)
์ฌ. ๊ถํ์ 644๋ก ์์
[hadoop@master .ssh]$ ls -la /home/hadoop/
[hadoop@master .ssh]$ chmod 644 ~/.ssh/authorized_keys
[์ค์ต]
[hadoop@master .ssh]$ ssh hadoop@master date
[hadoop@master .ssh]$ ssh hadoop@backup date
[hadoop@master .ssh]$ ssh hadoop@slave1 date
[hadoop@master .ssh]$ ssh hadoop@slave2 date
[hadoop@slave1 .ssh]$ ssh hadoop@master date
[hadoop@slave1 .ssh]$ ssh hadoop@backup date
[hadoop@slave1 .ssh]$ ssh hadoop@slave1 date
[hadoop@slave1 .ssh]$ ssh hadoop@slave2 date
[์ค์ต]
โป master์์ slave1์ผ๋ก ๋ก๊ทธ์ธ
[hadoop@master ~]$ ssh slave1
Last login: Wed Feb 17 13:57:38 2016 from master
[hadoop@slave1 ~]$
โป slave1์์ master์ผ๋ก ๋ก๊ทธ์ธ
[hadoop@slave1 ~]$ ssh master
hadoop@master's password:
Last login: Wed Feb 17 14:55:15 2016 from slave1
[hadoop@master ~]$
13.ํ๋ก ํ๊ฒฝ ์ค์ ํ์ผ ์์
ํ๋ก์ด ์คํํ๋ ๋ชจ๋ ํ๋ก์ธ์ค์ ์ ์ฉ๋๋ ์์คํ ํ๊ฒฝ ๊ฐ์ ์ค์
์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ํ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ค์ด ์คํ๋๋ค.
์ค์ ํ์ผ ์์น : /usr/local/hadoop-2.7.3/etc/hadoop/
๊ฐ. hadoop-env.sh
ํ๋ก์๊ฒ JDK์ค์น ๊ฒฝ๋ก ๋ฑ๋ก
[hadoop@master hadoop]$ cd /usr/local/hadoop-2.7.3/etc/hadoop/
[hadoop@master hadoop]$ ls โl
[hadoop@master hadoop]$ vi hadoop-env.sh //ํ๊ฒฝ ํ์ผ
export JAVA_HOME=/usr/local/jdk1.8.0_121
๋งจ ๋ง์ง๋ง์ ์ถ๊ฐํ์ธ์
export HADOOP_OPTS="$HADOOP_OPTS-Djava.library.path=/usr/local/hadoop-2.7.3/lib/native"
๋. masters
๋ณด์กฐ ๋ค์๋ ธ๋๋ฅผ ์คํํ ์๋ฒ ๋ฑ๋กํ๋ ํ์ผ
ํ ๋๋ก ํ๋ ค๋ฉด localhost๋ก ์ง์ . (default๋ก ์ง์ ๋์ด ์์)
๋ค. slaves
๋ฐ์ดํฐ ๋ ธ๋๋ฅผ ์คํํ ์๋ฒ ์ค์
ํ ๋๋ก ํ๋ ค๋ฉด localhost ์ง์ . (default๋ก ์ง์ ๋์ด ์์)
๋ฐ์ดํฐ ๋ ธ๋๊ฐ ์ฌ๋ฌ ๊ฐ์ด๋ฉด ๋ผ์ธ๋จ์๋ก ์๋ฒ์ด๋ฆ์ ์ค์ ํ๋ฉด ๋๋ค.
[hadoop@master hadoop]$ cat slaves
localhost
[hadoop@master hadoop]$ vi slaves
slave1
slave2
๋ผ. core-site.xml ํ์ผ ์์
๋ก๊ทธํ์ผ, ๋คํธ์ํฌ ํ๋, I/O ํ๋, ํ์ผ ์์คํ ํ๋, ์์ถ ๋ฑ ํ๋ถ ์์คํ ์ค์ ํ์ผ
core-site.xml ํ์ผ์ HDFS์ ๋งต๋ฆฌ๋์ค์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ํ๊ฒฝ์ ๋ณด ์ค์ ํฉ๋๋ค.
hadoopcore-1.x.x.jar ํ์ผ์ ํฌํจ๋์ด ์๋ core-default.xml์ ์ค๋ฒ๋ผ์ด๋ ํ ํ์ผ์ ๋๋ค.
core-site.xml์ ์ค์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ core-default.xml์ ์๋ ๊ธฐ๋ณธ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค
๊ณตํต ์์ฑ๋ค์ ๋ํ ์์ธํ ์ค๋ช ์ ๋ค์ ์ฃผ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
[hadoop@master hadoop]$ vi core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.3/tmp</value>
</property>
</configuration>
โป ํ๋ก ๋ถ์ฐ ํ์ผ ์์คํ (HDFS: Hadoop Distributed File System)
๋ง. hdfs-site.xml ์์
๋ฐ์ดํฐ ์ ์ฅ ๊ฒฝ๋ก ๋ณ๊ฒฝ
hdfs-site.xml ํ์ผ์ HDFS์์ ์ฌ์ฉํ ํ๊ฒฝ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
hadoop-core-2.2.0.jar ํ์ผ์ ํฌํจ๋์ด ์๋ hdfs-default.xml์ ์ค๋ฒ๋ผ์ด๋ ํ ํ์ผ์ ๋๋ค.
hdfs-site.xml์ ์ค์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ hdfs-default.xml์ ์๋ ๊ธฐ๋ณธ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
HDFS ์์ฑ๋ค์ ๋ํ ์์ธํ ์ค๋ช ์ ๋ค์ ์ฃผ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
[hadoop@master hadoop]$ vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> //๋ฐ์ดํฐ๋ฅผ 1๊ฐ๋ง ๋ณต์ฌ:๊ฐ์๋ถ์ฐ๋ชจ๋, 3์ผ๊ฒฝ์ฐ:์์ ๋ถ์ฐ๋ชจ๋
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>backup:50090</value>
</property>
</configuration>
๋ฐ. mapred-site.xml ํ์ผ ์์
mapred-site.xml ํ์ผ์ ๋งต๋ฆฌ๋์ค์์ ์ฌ์ฉํ ํ๊ฒฝ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
hadoop-core-x.x.x.jar ํ์ผ์ ํฌํจ๋์ด ์๋ mapred-default.xml์ ์ค๋ฒ๋ผ์ด๋ ํ ํ์ผ์ ๋๋ค.
mapred-site.xml์ ์ค์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ mapred-default.xml์ ์๋ ๊ธฐ๋ณธ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
๋ง์ฝ mapred-site.xml์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ mapred-site.xml.template๋ฅผ ๋ณต์ฌํ์ฌ ์ฌ์ฉ
[hadoop@master hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@master hadoop]$ vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
์ฌ. yarn-site.xml
์์ ์ํจ, default์ค์ ๋ฐ๋ฆ, ๊ทธ๋ฐ๋ฐ mapred-site.xml์์ yarn์ ์ ํํ์ ๊ฒฝ์ฐ ๋ด์ฉ ์ถ๊ฐ
๋งต๋ฆฌ๋์ค ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์ ํ ์๋น์ค๋ฅผ ์ง์ ํ๋ค
[hadoop@master hadoop]$ vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
14.๋ค๋ฅธ ๋ ธ๋ ์ค์ ํ์ผ ๋๊ธฐํ
* rsync
์๊ฒฉ ์๋ฒ์ ํ์ผ์ ๋คํธ์ํฌ๋ฅผ ๊ฑฐ์ณ์ ์ ์กํ๋ ์คํ ์ํํธ์จ์ด
๋ค๋ฅธ ๋ ธ๋์์
# mkdir /usr/local/hadoop-2.7.3
# chown -R hadoop:hadoop /usr/local/hadoop-2.7.3
๋ง์คํฐ ๋ ธ๋์์
# cd /usr/local/hadoop-2.7.3
# rsync -av . hadoop@backup:/usr/local/hadoop-2.7.3
# rsync -av . hadoop@slave1:/usr/local/hadoop-2.7.3
# rsync -av . hadoop@slave2:/usr/local/hadoop-2.7.3
# cd /usr/local/hadoop-2.7.3/etc/hadoop
# rsync -av . hadoop@backup:/usr/local/hadoop-2.7.3/etc/hadoop
# rsync -av . hadoop@slave1:/usr/local/hadoop-2.7.3/etc/hadoop
# rsync -av . hadoop@slave2:/usr/local/hadoop-2.7.3/etc/hadoop
15. ๋ค์๋ ธ๋ ์ด๊ธฐํ
์ปดํจํฐ๋ฅผ ํ๋ ๋์คํฌ๋ฅผ ์ฌ์๊ฑฐ๋ USB๋ฅผ ์ฌ์๋ฉด ๊ทธ๊ฑธ ์ด์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ format๋ฅผ ํฉ๋๋ค.
ํ๋๋์คํฌ ์ด๊ธฐํ๋ผ๊ณ ์๊ฐํ์ ๋ ๋๋๋ฐ Hadoop ๋ํ ๊ตฌ์ฑ ์ ์ฒ์ ํ์ค ์ผ์ formatํ๋ ์ผ์ ๋๋ค.
๋ค์๋ ธ๋๋ ์ต์ด ํ๋ฒ๋ง ์คํํ๋ฉด ๋จ
์๋ฌ๋ฉ์์ง๊ฐ ์๋ค๋ฉด ํ๊ฒฝ์ค์ ํ์ผ์ด ์๋ชป๋ ๊ฒ์.
ํ์ธํ๊ณ ์์ ํ ๋ค์ ๋ค์ ์คํ ์ํฌ ๊ฒ
[hadoop@master ~]$ cd /usr/local/hadoop-2.7.3/bin
[hadoop@master bin]$
[hadoop@master bin]$ hdfs namenode -format
๊ฐ. ํ๋ก์ธ์ค ์คํ
[hadoop@master sbin]$ pwd
/usr/local/hadoop-2.7.3/sbin
[hadoop@master sbin]$ ./start-dfs.sh
[hadoop@master sbin]$ ./start-yarn.sh
[hadoop@master sbin]$ jps
4147 DataNode -----------------------> slave2
12373 NameNode
12703 SecondaryNameNode ----------> backup
12851 ResourceManager
13451 Jps
9590 NodeManager
13392 JobHistoryServer
[hadoop@slave1 sbin]$ jps
6001 DataNode
6103 NodeManager
6350 Jps
๋ธ๋ผ์ฐ์ ์์๋ ํ์ธ
http://master:50070 ๋๋
http://master:50070/dfshealth.html ์คํํ ํ์ผ ์์คํ ์ํ ๋ณด์ฌ์ผ ํจ
1.x์ JobTracker๋ http://master:8088/cluster ์์ ํ์ธํ ์ ์์
์ฝ์์์๋ ํ์ธ
[hadoop@master hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[hadoop@master sbin]$ hdfs dfsadmin โreport
โ eclipse ์คํ
[hadoop@master ~]$ mkdir jar
์ดํด๋ฆฝ์ค ์คํ
[hadoop@master eclipse]$ pwd
/usr/local/eclipse
[hadoop@master eclipse]$ ./eclipse
Workspace : /home/hadoop/workspace
[์ค์ต]
Project : hadoop
โ ํ์ํ JAR
/usr/local/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar
/usr/local/hadoop-2.7.3/share/hadoop/common/lib/commons-cli-1.2.jar
/usr/local/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-core.2.7.3.jar
/usr/local/hadoop-2.7.3/share/hadoop/mapreduce/lib/log4j.1.2.17.jar
โ HDFS FS shell๋ช ๋ น์ด
1 ํด๋์์ฑ : hadoop fs -mkdir [ํด๋๋ช
]
2. ํ์ผ/ํด๋ ์ญ์ : hadoop fs -rm [ํ์ผ๋ช
]
โ hadoop fs -rm -r [ํด๋๋ช
]
3. ํ์ผ ๋ณต์ฌ : hadoop fs -cp [ํด๋๋ช
] [ํด๋๋ช
/ํ์ผ๋ช
]
4. ๋ฆฌ์คํธ ๋ณด๊ธฐ : hadoop fs -ls /
5. ํ์ผ ๋ด์ฉ ๋ณด๊ธฐ : hadoop fs*-cat [ํ์ผ๋ช
]
6. ํ์ผ ์ฌ๋ฆฌ๊ธฐ : hadoop fs-put [๋ก์ปฌ๊ฒฝ๋กํ์ผ๋ช
] [ํ๋ก๊ฒฝ๋กํ์ผ๋ช
]
ํ๋ก๊ฒฝ๋ก๋ฅผ ์๋ตํ๋ฉด default ๋๋ ํ ๋ฆฌ๊ฐ ๋๋ค
[hadoop@master ~]$ hadoop fs โls abc.txt
[hadoop@master ~]$ hadoop fs โls โ /user/hadoo์ ์์น
-rw-r--r-- 1 hadoop supergroup 14 2017-01-15 23:02 abc.txt
[hadoop@master ~]$ hadoop fs โls /
drwxr-xr-x - hadoop supergroup 0 2017-01-15 23:02 /user
[hadoop@master ~]$ hadoop fs -mkdir /test
[hadoop@master ~]]$ hadoop fs โls /
drwxr-xr-x - hadoop supergroup 0 2017-01-16 00:43 /test
drwxr-xr-x - hadoop supergroup 0 2017-01-15 23:02 /user
๋ฆฌ๋ ์ค ํ์ผ
[hadoop@master ~]$ vi apple.txt
[hadoop@master ~]$ hadoop fs โput apple.txt โ ๋ฆฌ๋
์ค ํ์ผ์ ํ๋ก์ ์ฌ๋ฆฌ๊ธฐ
[hadoop@master ~]$ hadoop fs โls
-rw-r--r-- 1 hadoop supergroup 38 2017-01-16 00:50 apple.txt
-rw-r--r-- 1 hadoop supergroup 14 2017-01-15 23:02 abc.txt
[hadoop@master ~]$ hadoop fs โput apple.txt /
[hadoop@master ~]$ hadoop fs -ls /
-rw-r--r-- 1 hadoop supergroup 38 2017-01-16 00:50 /apple.txt
drwxr-xr-x - hadoop supergroup 0 2017-01-16 00:43 /test
drwxr-xr-x - hadoop supergroup 0 2017-01-15 23:02 /user
[hadoop@master ~]$ hadoop fs -ls /user/hadoop
-rw-r--r-- 1 hadoop supergroup 18 2017-01-16 11:18 /user/hadoop/apple.txt
-rw-r--r-- 1 hadoop supergroup 24 2017-01-16 10:50 /user/hadoop/abc.txt
[hadoop@master ~]$ hadoop fs -cat /apple.txt
[hadoop@master ~]$ hadoop fs -cat /user/hadoop/abc.txt
[hadoop@master ~]$ hadoop fs -cp /apple.txt /pear.txt
[hadoop@master ~]$ hadoop fs -ls /
Found 4 items
-rw-r--r-- 1 hadoop supergroup 38 2017-01-16 00:50 /apple.txt
-rw-r--r-- 1 hadoop supergroup 38 2017-01-16 01:02 /pear.txt
drwxr-xr-x - hadoop supergroup 0 2017-01-16 00:43 /test
drwxr-xr-x - hadoop supergroup 0 2017-01-15 23:02 /user
[hadoop@master ~]$ hadoop fs -cat /pear.txt
[hadoop@master ~]$ hadoop fs -rm /pear.txt
[hadoop@master ~]$ hadoop fs -rm -r /test
โ ๊ทธ ์ธ ๋ช ๋ น์ด๋ค
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal
count
cp
du
dus
expunge
get
getmerge
ls
lsr
mkdir
moveFromLocal
moveToLocal
mv
put
rm
rmr
setrep
stat
tail
test
text
touchz
Node๋ผ๋๊ฒ์ โ์๋ฒ 1๋โ๋ฅผ ์๋ฏธํฉ๋๋ค
NameNode - ๋ค์๋ ธ๋
โ - DataNode์ ์ค์ ํ์ผ์ Meta์ ๋ณด๋ค์ ์ ์ฅํ๋ ๊ณณ
โ - ์ค์ ํ์ผ์ ์ ์ฅํ์ง ์์
SecondaryNode - ์ธ์ปจ๋๋ฆฌ ๋ ธ๋
โ - NameNode๊ฐ ์ฅ์ ๋ฐ์ํ๋ฉด ์ฐจํ ๋ณต๊ตฌ ์ ํ์ฉ๋๋ ์ ๋ณด
DataNode - ์ค์ Data๊ฐ ์ ์ฅํ๋๊ณต๊ฐ (html, avi, mp3, pdf, nosql ๋ฑ๋ฑ )
Hadoop ๋ถ์ฐ ํ์ผ ์์คํ (HDFS)์์๋ 64MB๋ก ์ง๋ฅธ ๊ฒ์ด ๋ธ๋ก(Block)์ ๋๋ค.
150MB์ง๋ฆฌ 1.avi๋ผ๋ ๋์์ ํ์ผ์ด ์์ต๋๋ค
1.avi ๋์์์ HDFS์์ ์ ์ฅ ํ ๊ฒฝ์ฐ ์ฐ์ 150MB์ง๋ฆฌ 1.avi๋ฅผ 64MB๋ก ๋๋๋๋ค.
150MB / 64MB = 2.3์ ๋๋ค.
์ฆ 150MB ์ง๋ฆฌ ํ์ผ1๊ฐ๋ฅผ 3๊ฐ์ ํ์ผ๋ก ๋ง๋ค ๊ฒ์ด๋ฉฐ, 3๊ฐ๋ก ์ชผ๊ฒ๋ค(split)๋ผ๊ณ ๋ ํฉ๋๋ค. ์ด ์ชผ๊ฐ์ง ํ์ผ ํ๋ ํ๋๋ฅผ Block(๋ธ๋ก) ๋๋ ์ฒญํฌ(chunk)๋ผ๊ณ ๋ ๋งํฉ๋๋ค. ์์ ๊ทธ๋ฆผ์ 1-1, 1-2, 1-3์ด Block์ ๋๋ค.
๋ง์ฝ ์๋ฒ 1๋์ 600MB๋ฅผ ์ฝ๊ธฐ/์ฐ๊ธฐ ํ ๋์ 600MB๋ฅผ 10๊ฐ๋ก ๋๋์ด ์๋ฒ10๋๊ฐ ์ฝ๊ณ /์ฐ๊ณ ํ๋ค ๋ผ๊ณ ํ๋ฉด ์๋ฒ 1๋๋น 64MB๋ฅผ ์ฝ๊ธฐ/์ฐ๊ธฐ ํ๋ ๊ฒ์ ๋๋ค
DFS๋ ๋ณต์ ์ ์ฑ ์ ์ด์์๊ฐ ์ธ์ธ ์ ์์ต๋๋ค.
HDFS๋ก ๊ตฌ์ฑ๋ Node์ ๋ธ๋กํ์ผ์ 2๊ฐ์ฉ ๋ณต์ , 3๊ฐ์ฉ ๋ณต์ , 4๊ฐ์ฉ ๋ณต์ฌ ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํน์ ์๋ฒ์์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋ฒ์ ๋ธ๋กํ์ผ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ์ํฅ์ด ์์ต๋๋ค.
์ด๊ฒ์ No Single Point of Failure ๋ผ๊ณ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก HDFS๋ 2๊ฐ์ง ํํ์ ์๋ฒ(Node)๊ฐ ์์ต๋๋ค.
NameNode์ DataNode์ ๋๋ค.
NameNode๋ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ ์ง๋๋ค.
NameNode(Master๊ฐ๋ )์ SecondaryNameNode๋ก ๋๋ ์ง๋๋ค.
NameNode์๋ ์ค์ ํ์ผ์ด ์กด์ฌ ํ์ง ์์ต๋๋ค
NameNode(Master๊ฐ๋ )๋ DataNode์ ์ ์ฅ๋์ด์๋ ํ์ผ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๊ฒ์ Meta์ ๋ณด๋ผ๊ณ ํฉ๋๋ค.
์ค์ ์ ์ผ๋ก tree๊ตฌ์กฐ๋ก ํ์ผ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
NameNode(Master๊ฐ๋ )์ ์ค์ ํ์ผ์ ์ ์ฅํ๊ณ ์์ง๋ ์์ง๋ง DataNode์ ์ ์ฅ๋ ํ์ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์์ต๋๋ค.
โ์ฑ ์์๋ ๋ค์๋ ธ๋๋ ํ์ผ์์คํ ์ ๋ค์์คํ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋คโ๋ผ๊ณ ๋ํฉ๋๋ค.
๋ํ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ญ์ ์ ์ฅ ํ๊ฒ ๋๋ฉฐ ๊ทธ ์ด์ ๋ Client๊ฐ ํ์ผ์ ์ฐพ์๋๋ ์ฝ๊ณ , ์ฐ๊ธฐ ํ ๋ ๋น ๋ฅธ DataNode๋ฅผ ์ฐพ์๊ฐ๊ธฐ ์ํด์์ ๋๋ค.
์์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ๋์๋ค๊ณ ํ์ง๋ง ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๊ฒฝ์ฐ ์ปดํจํฐ๊ฐ ๋ฆฌ๋ถํ ๋ ๊ฒฝ์ฐ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ธ์ Local ๋์คํฌ(ํ๋๋์คํฌ)์๋ ๋ฉํฐ์ ๋ณด๋ฅผ ์ ์งํ๊ฒ ๋๋๋ฐ ์ดMeta์ ๋ณด๋ ๋ก์ปฌ๋์คํฌ์ ๋ค์์คํ์ด์ค ์ด๋ฏธ์ง(Namespace image)์ ์๋ํธ ๋ก๊ทธ(edit log)ํํ๋ก ์ง์์ ์ผ๋ก ์ ์ฅํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค์๋ ธ๋๋ ์ฃผ์ด์ง ํ์ผ์ ๋ํ ๋ชจ๋ ๋ธ๋ก์ด ์๋ ๋ฐ์ดํฐ ๋ ธ๋์ ์๊ณ ์์ต๋๋ค
NameNode๊ฐ DataNode์ ์ค์ Mata์ ๋ณด๋ฅผ ๊ธฐ์ตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ฐพ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ NameNode๊ฐ ์๋ฌ/์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋๋ HDFS๋ก ๊ตฌ์ฑ๋ ๋ชจ๋ ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
DataNode์ ์ค์ง์ ์ผ๋ก ํ์ผ์ด ์ ์ฅ๋์ด ์๋ค๊ณ ํ๋๋ผ๋ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๊ทธ๋์ ์ด๋ฐ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Secondary Namenode๊ฐ ์กด์ฌํฉ๋๋ค.
SecondaryNameNode๋ Master๊ฐ๋ ์ Namenode์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋์ฒ์ฉ์ด ์๋๋๋ค.
HDFS์ Secondary Namenode๋ ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๊ณ ์์ต๋๋ค. NameNode๊ฐ ์ฅ์ ์ ๋ค์ ์คํํ์ ๋ Secondary์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ณต๊ตฌํ ์ ์๋๋ก ์ ๊ณตํ๋ ์๋ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ NameNode(Master๊ฐ๋ )์ namespace image์ edit log, ์ ๋ ํ์ผ๋ฑ ํ์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ์ฌ ์ ์ฅ ํฉ๋๋ค
DataNode๋ ์ค์ ํ์ผ์ด ์ ์ฅ๋๋ ๊ณต๊ฐ์ ๋๋ค.
๋์์ ํ์ผ์ด๋, txtํ์ผ, excelํ์ผ, pdf, Hbase์ DB์ ๋ณด, mp3 ํ์ผ ๋ฑ๋ฑ ๋ชจ๋ ํ์ผ์ ์ ์ฅํ๊ฒ ๋์ด ์์ต๋๋ค.
DataNode์ Block๋จ์๋ก ์ ์ฅ๋๋ฉฐ ๊ธฐ๋ณธ Block๋ 64MB์ ๋๋ค.
๋ํ ์ด๋ฐ ๋ธ๋ก๋ค์ ๋ณต์ (4๋ฒ) ์ ์ฑ ์ ์ํด ๋ค๋ฅธ DataNode๋ก Copy๋ฅผ ํฉ๋๋ค.
Block๋ค์ ๋ด๋ถ ์ ์ฑ ์ ์ํด ์ฌ๋ฌ DataNode์ ์ ์ฅ์ด ๋๋๋ฐ, ํน์ Node(์๋ฒ)๊ฐ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ค๋ฅธ Node๋ค์ Block์ ๋ณด๋ฅผ ์ฝ์ผ๋ฏ๋ก์ ์๋น์ค์ ์ด์์ด ์์ด ๊ตฌ๋์ด ๋ฉ๋๋ค.
์ด๊ฒ์ No Single Point of Failure์ ๋๋ค.
NameNode๋ ์ฅ์ ๋ฐ์์ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ๋์ฒ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ์ง๋ง DataNode๋ ๊ทธ๋ด ๊ฑฑ์ ์ด ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก DataNode์ ๋ชจ๋ ์๋ฒ๋ค์ NameNode์ ํต์ ์ ํ๋ฉฐ, Client์ ์์ฒญ์ผ๋ก Blockํ์ผ๋ค์ ์ฝ๊ณ ๋ฅผ ์ํํฉ๋๋ค.