์ ๋ฒ ํฌ์คํ
์์๋, Map Reduce ๋ฅผ ๊ณต๋ถํ์์ต๋๋ค.
์ด๋ฒ์๋ ํ๋ก์ ์ฌ๋ฌ ์์ฝ์์คํ
๋ค์ ๋ํด ๊ณต๋ถํ๊ณ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ Hadoop ์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ํํธ์ด๊ธฐ ๋๋ฌธ์, ์์ฝ์์คํ ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค. ๊ฐ ์์ฝ์์คํ ์ ๋ํ ์ผํ ๋ด์ฉ์ ์ถํ ๊ณต๋ถํ๊ณ ๋ฐ๋ก ํฌ์คํ ํ๊ฒ ์ต๋๋ค. :D
๐ ๋ถ์ฐ ์์คํ
์ ์ดํด์ ํ๋ก์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๐ ํ๋ก์ ํต์ฌ ๊ตฌ์ฑ์์์ ์ด๋ก
๐ YARN(Yet Another Resource Negotiator) ๊ธฐ๋ณธ ์ด๋ก
๐ Map Reduce ๊ธฐ๋ณธ ์ด๋ก
๐ 1. ํ๋ก ์์ฝ์์คํ ๊ณผ ๊ด๋ จ ํ๋ก์ ํธ
ํ๋ก์ ๋จ์ํ ๋ถ์ฐ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ก ์ถ๋ฐํ์ง๋ง, ํ์ค ์ธ๊ณ์ ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ์๋ง์ ์์ฝ์์คํ
๊ตฌ์ฑ ์์๋ค๋ก ํ์ฅ๋์์ต๋๋ค.
์ด๋ฌํ ์์ฝ์์คํ
๋ค์ ํ๋ก์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ(HDFS์ MapReduce)๋ง์ผ๋ก๋ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ์ค์ง์ ์ธ ๋ฌธ์ ๋ค์ ๋ณด์ํ๊ณ , ๋ค์ํ ์ฌ์ฉ ์๋๋ฆฌ์ค์ ๋์ํ๊ธฐ ์ํด ๋ฑ์ฅํ๊ฒ ๋์์ต๋๋ค.
์๋ ๋ก ๋์๊ฐ๋ณด๋ฉด, ์ด๊ธฐ ํ๋ก์ HDFS๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , MapReduce๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ์์๋์์ต๋๋ค.
์ด ๊ตฌ์กฐ๋ ๋๊ท๋ชจ ๋ฐฐ์น ์ฒ๋ฆฌ์๋ ์ ํฉํ์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ์ ํ์ ์ด ์กด์ฌํ์ต๋๋ค.
๋ช ๊ฐ์ง ์์๋ฅผ ๋ค์ด๋ณด๋ฉด,
MapReduce๋ ๋ฐฐ์น ์ฒ๋ฆฌ์ ์ต์ ํ๋์ด ์์ด, ์ค์๊ฐ ๋ก๊ทธ ๋ถ์, ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ๋ฑ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ ์ค์๊ฐ ๋ถ์์๋ ์ ํฉํ์ง ์์์ผ๋ฉฐ,
๋ชจ๋ ์ฒ๋ฆฌ๋ฅผ Java ๊ธฐ๋ฐ์ผ๋ก MapReduce ๋ก์ง์ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์, SQL์ ์ ํธํ๋ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ค์๊ฒ๋ ์ง์
์ฅ๋ฒฝ์ด ๋งค์ฐ ๋์์ต๋๋ค.
๋ํ, ๋ฐฐ์น ์ฒ๋ฆฌ ์ธ์ ETL, ๋จธ์ ๋ฌ๋, ๊ฒ์, ๊ทธ๋ํ ๋ถ์ ๋ฑ ๋ค์ํ ์ํฌ๋ก๋๋ฅผ ์ ์ฐํ๊ฒ ์ง์ํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
์ด๋ฌํ ํ๊ณ์ ์ ๋ณด์ํ๊ธฐ ์ํด, ํ๋ก ๊ธฐ๋ฐ ์์ ์ ๋ฌธ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ค์ํ ์๋ธ ํ๋ก์ ํธ๋ค์ด ์์ฐ์ค๋ฝ๊ฒ ๋ฑ์ฅํ์ต๋๋ค.
ํ๋ก์ ํ๋์ ๊ฑฐ๋ํ ์ผ์ฒดํ ์ํํธ์จ์ด๊ฐ ์๋๋ผ, ์๋ก ๋ค๋ฅธ ์ญํ ์ ์ํํ๋ ์ฌ๋ฌ ํ๋ก์ ํธ๋ค์ด ๋์จํ๊ฒ ๊ฒฐํฉ๋ ๋ชจ๋ํ ์ํ๊ณ(Modular Ecosystem)๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๊ฐ๊ฐ์ ๋๊ตฌ๋ค์ ํน์ ๋ฌธ์ ์์ญ์ ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์๊ณ , ์๋ก ์ฐ๋๋๋ฉด์ ๋ณด๋ค ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ฑํฉ๋๋ค.
์๋์์ ๋ ์์ธํ ์์๋ณด๊ฒ ์ง๋ง, ์ง๊ธ ๋ช ๊ฐ์ง๋ง ๊ฐ๋ตํ๊ฒ ์ด์ผ๊ธฐํด๋ณด๋ฉด ์ดํด๊ฐ ์ฌ์ธ๊ฒ๋๋ค.
-
Pig, Hive โ SQL ํน์ DSL๋ก MapReduce ์ถ์ํ โ ์ฌ์ฉ์ ํธ์์ฑ ํฅ์
-
HBase โ HDFS ์์ ์ปฌ๋ผ ๊ธฐ๋ฐ DB ๊ตฌ์ถ โ ์ค์๊ฐ ์กฐํ ๊ธฐ๋ฅ ์ ๊ณต
-
Zookeeper โ ๋ถ์ฐ ํ๊ฒฝ์์์ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ๋ฝ ์ฒ๋ฆฌ โ ๊ณ ๊ฐ์ฉ์ฑ ๋ณด์ฅ
-
Oozie, Airflow โ ์ํฌํ๋ก์ฐ์ ์์ ์ค์ผ์ค๋ง โ ์๋ํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
-
YARN โ ์์ ๊ด๋ฆฌ์ ์ค์ ์ง์คํ โ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์ง์
-
Spark, Tez, Flink โ MapReduce๋ฅผ ๋์ฒดํ๊ฑฐ๋ ๋ณด์ํ๋ ๊ณ ์ ์ฒ๋ฆฌ ์์ง
์ด์ฒ๋ผ ๊ฐ๊ฐ์ ํ๋ก์ ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก๋ ํ์ฉ ๊ฐ๋ฅํ์ง๋ง, ํ๋ก์ด๋ผ๋ ๊ณตํต๋ ๊ธฐ๋ฐ ์์์ ์ํธ ๋ณด์์ ์ธ ๊ด๊ณ๋ก ์๋ํฉ๋๋ค. ์ด๋ฌํ ์ค๊ณ๋ ํ๋ก์ด ๋จ์ํ ํ๋ ์์ํฌ๋ฅผ ๋์ด, ๋ฒ์ฉ ๋ถ์ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ซํผ์ผ๋ก ์งํํ๊ฒ ๋ ํต์ฌ ๋ฐฐ๊ฒฝ์ด๊ธฐ๋ ํฉ๋๋ค.
์์ ๊ฐ์ ์ด์ ์ ์ฌ์์ ๊ฐ์ง๊ณ , ํ๋ก ์์ฝ์์คํ ์ ์คํ์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๋๊ตฌ๋ ์ฐธ์ฌํ๊ณ ํ์ฅํ ์ ์๋๋ก ์ค๊ณ๋์ด ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ค์ํ ๊ธฐ์ ๊ณผ ์ปค๋ฎค๋ํฐ์์ ์์ ๋ค์ ์๊ตฌ์ ๋ง์ถฐ ํ๋ก์ ์ปค์คํฐ๋ง์ด์งํ๊ณ , ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ํ์ ์ธ ์๋ก, Cloudera, Hortonworks, MapR ๋ฑ ์์ฉ ๋์คํธ๋ฆฌ๋ทฐํฐ๋ค์ ํ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ํ ํตํฉ ํ๋ซํผ์ ์ ๊ณตํ๋ฉด์, ๋ณด์, ๋ชจ๋ํฐ๋ง, ํตํฉ ๊ด๋ฆฌ ๋๊ตฌ ๋ฑ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐํด ์ํ๊ณ๋ฅผ ๋์ฑ ํ์ฑํ๊ฒ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ผ ์ง๊ธ๋ถํฐ ๋ํ์ ์ธ ์์ฝ์์คํ ๋ช ๊ฐ์ง๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ 1.1. Apache Avro ์ Parquet ๊ทธ๋ฆฌ๊ณ ORC
ํ๋ก์ ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ ์ ์๋ ํ๋ซํผ์ด๋ผ๋ ์ ์ ๋ง์ ๋ถ๋ค์ด ์ด๋ฏธ ์๊ณ ์์ ๊ฒ์ ๋๋ค. ๋ํ, ํ๋ก์ ๋ถ์ฐ ํ์ผ ์์คํ (HDFS)์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ ํ, ๋ฐ์ ํ, ๋น์ ํ ์ฌ๋ถ์ ๊ด๊ณ์์ด Spark, Hive, Pig, Impala, Presto ๋ฑ ๋ค์ํ ์ฒ๋ฆฌ ์์ง์ ํตํด ๊ฐ๊ณตํ๊ณ ๋ถ์ํ ์ ์๋ค๋ ์ ๋ ์ ์๋ ค์ ธ ์์ต๋๋ค.
ํ์ง๋ง ํ๋ก๊ณผ ๊ทธ ์์ฝ์์คํ ์ ํ๋ํ๋ ํ์ตํ๋ค ๋ณด๋ฉด, ์์ฐ์ค๋ฝ๊ฒ โํ๋ก์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ํ์์ผ๋ก ์ ์ฅํด์ผ ํจ์จ์ ์ธ๊ฐ?โ ๋ผ๋ ์ง๋ฌธ์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค. ์ค์ ๋ก, ๋ฐ์ดํฐ ์ ์ฅ ํ์์ ํ๋ก ํ๊ฒฝ์์ ์ฑ๋ฅ๊ณผ ์์ ํจ์จ์ฑ์ ์ง๊ฒฐ๋๋ ํต์ฌ ์์์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ๋ง์ด ์ฌ์ฉํด์๋ CSV, JSON, XML๊ณผ ๊ฐ์ ์น์ํ ํ์ผ ํฌ๋งท์ ํ๋ก ํ๊ฒฝ์์๋ ๊ทธ๋ฆฌ ์ ํธ๋์ง ์์ต๋๋ค.
์ด์ ๋ ๋ช ํํฉ๋๋ค. ์ด๋ฌํ ํ์์ ํ๋ก์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ค ํ๋์ธ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์คํ ๋ฆฌ์ง ์ต์ ํ์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋ก์ ์ฌ์ฉํ๋ ์ฃผ์ ๋ชฉ์ ์ค ํ๋๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๊ณ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ์ฌ ๋์ ์ฒ๋ฆฌ๋๊ณผ ํ์ฅ์ฑ์ ํ๋ณดํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ CSV๋ JSON ๊ฐ์ ํฌ๋งท์ ๊ตฌ์กฐ์
-
์คํค๋ง ์ ๋ณด๊ฐ ์ธ๋ถ์ ๋ณ๋๋ก ์กด์ฌํด์ผ ํ๊ณ
-
์์ถ์ด๋ ์ปฌ๋ผ ๋จ์ ์ ๊ทผ์ ๋นํจ์จ์ ์ด๋ฉฐ
-
๋ฐ์ดํฐ ๋ถํ (partitioning) ๋ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ์ฝ์ด ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด, ํ๋ก ๊ธฐ๋ฐ ์์คํ ์์๋ ๋ณดํต Avro, Parquet, ORC(Optimized Row Columnar)์ ๊ฐ์ ์ต์ ํ๋ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท์ ํ์ฉํฉ๋๋ค.
์ด๋ค ํฌ๋งท์ ๊ณตํต์ ๋ ์์ง๋ง, ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ง๊ณผ ์ฌ์ฉ ๋ชฉ์ , ์ฅ๋จ์ ์ด ์กด์ฌํฉ๋๋ค.
์ด์ ๋ถํฐ ์ด ์ธ ๊ฐ์ง ๋ํ์ ์ธ ์ ์ฅ ํฌ๋งท์ ๋น๊ต ๋ถ์ํ๋ฉด์, ์ด๋ค ์ํฉ์ ์ด๋ค ํฌ๋งท์ ์ ํํด์ผ ํ๋์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
โ ๊ณตํต์
-
ํ๋ก์ ์ต์ ํ๋ ์ ์ฅ ํ์
์ธ ํฌ๋งท ๋ชจ๋ HDFS ๋ฑ ํ๋ก์ ๋ถ์ฐ ์คํ ๋ฆฌ์ง ํ๊ฒฝ์์ ๋์ ์ฑ๋ฅ์ ๋ด๋๋ก ์ค๊ณ๋์์ต๋๋ค. -
๋ด์ฅ ์์ถ ๊ธฐ๋ฅ ์ ๊ณต
๊ธฐ๋ณธ์ ์ผ๋ก ์์ถ์ ์ง์ํ๋ฉฐ, ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝํ๊ณ I/O ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. -
๊ธฐ๊ณ๊ฐ ์ฝ๋ ๋ฐ์ด๋๋ฆฌ ํ์
์ฌ๋์ด ์ฝ๊ธฐ ํธํ JSON, XML๊ณผ ๋ฌ๋ฆฌ ์ด๋ค ํฌ๋งท์ ๋ฐ์ด๋๋ฆฌ ํํ๋ก ์ ์ฅ๋์ด ๊ธฐ๊ณ๊ฐ ์ฝ๊ธฐ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
์ด๋ก ์ธํด ํ๋ก์์ JSON/XML์ ์ฌ์ฉํ๋ ค ํ๋ค๋ฉด, ํ๋ก์ ์ฌ์ฉํ๋ ์ด์ ์์ฒด๋ฅผ ์ฌ๊ณ ํด์ผ ํ ์ ๋์ ๋๋ค. -
๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐ ํ์ฅ์ฑ
์ธ ๊ฐ์ง ํ์ ๋ชจ๋ ํ์ผ์ ์ฌ๋ฌ ๋์คํฌ์ ๋ถ์ฐ ์ ์ฅํ ์ ์์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
๋ฐ๋ฉด JSON, XML์ ํ์ผ ๋จ์๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ๋ถํ ์ฒ๋ฆฌ์ ์ ์ฝ์ด ์์ต๋๋ค. -
์คํค๋ง ๋ด์ฅ ์ง์
์ธ ํฌ๋งท ๋ชจ๋ ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ํจ๊ป ์ ์ฅํฉ๋๋ค.
๋ฐ๋ผ์ ํ์ผ๋ง์ผ๋ก๋ ์ด๋ค ๋ฐ์ดํฐ์ธ์ง ์ ์ ์์ด, ์์คํ ๊ฐ ๋ฐ์ดํฐ ์ด๋ ์ ์ ๋ฆฌํฉ๋๋ค. -
Wire Format์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋จ์ํ ์ ์ฅ ํฌ๋งท์ด ์๋๋ผ, ๋คํธ์ํฌ๋ฅผ ํตํ ์ ์ก์๋ ์ฌ์ฉํ ์ ์๋ ํ์์ ๋๋ค.
์ฆ, Hadoop ํด๋ฌ์คํฐ ๋ด์์ ๋ ธ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์๋ ํ์ฉ๋ฉ๋๋ค.
๐ Wire Format์ด๋?
๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์ ์ ์ฅํ ์ ์๋ ํ์์ ๋งํ๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๊ธฐ ๋๋ฌธ์ โwire(์ ์์)โ ํฌ๋งท์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
โ Avro, Parquet, ORC์ ์ฐจ์ด์ : ์ ์ฅ ๋ฐฉ์๊ณผ ํ์ฉ ๋ชฉ์ ์ ์ฐจ์ด
์ธ ํฌ๋งท์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ์์ต๋๋ค.
Avro๋ ํ(Row)-๊ธฐ๋ฐ ํฌ๋งท์ธ ๋ฐ๋ฉด, Parquet์ ORC๋ ์ด(Column)-๊ธฐ๋ฐ ํฌ๋งท์
๋๋ค.
-
์ด ๊ธฐ๋ฐ ํฌ๋งท (Columnar Format)์ ๋ถ์ ์ฟผ๋ฆฌ์ฒ๋ผ ์ผ๋ถ ์ด๋ง ์ ํ์ ์ผ๋ก ์กฐํํ๋ ์์ ์ ์ ๋ฆฌํฉ๋๋ค.
์: ๋ฆฌํฌํธ ์์ฑ, ์ง๊ณ ๋ถ์ ๋ฑ -
ํ ๊ธฐ๋ฐ ํฌ๋งท (Row Format)์ ์ ์ฒด ํ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ฝ๊ฑฐ๋, ์ฐ๊ธฐ ์์ ์ด ๋น๋ฒํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
์: ํธ๋์ญ์ ๊ธฐ๋ก, ๋ก๊ทธ ์์ง ๋ฑ
โ ์์๋ก ์ดํดํ๋ ์ ์ฅ ๋ฐฉ์์ ์ฐจ์ด
โฃ ์์ 1: ์ด ๊ธฐ๋ฐ ํฌ๋งท์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ
์๋๋ฆฌ์ค: 100๋ง ๋ช
์ ์ง์์ ๋ ๋๊ธฐ์
์ HRํ์ด ์ง์ญ๋ณ ๊ธ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ๊ฒฝ์ฐ
- ์ฟผ๋ฆฌ ๋ชฉ์ :
๊ธ์ฌ
,์ง์ญ
์ด๋ง ์กฐํ - Parquet/ORC์ฒ๋ผ ์ด ๊ธฐ๋ฐ ํฌ๋งท์ ํ์ํ ์ด๋ง ์ ํ์ ์ผ๋ก ์กฐํ ๊ฐ๋ฅํ๋ฏ๋ก ์ฝ๊ธฐ I/O๊ฐ ์ ๊ณ ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.
- ๋ฐ๋ฉด, Avro๋ ํ ์ ์ฒด๋ฅผ ์ฝ๊ณ ๊ทธ ์ค ํ์ํ ์ด๋ง ํํฐ๋งํด์ผ ํ๋ฏ๋ก ๋นํจ์จ์ ์ ๋๋ค.
โฃ ์์ 2: ํ ๊ธฐ๋ฐ ํฌ๋งท์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ
์๋๋ฆฌ์ค: ํญ๊ณต์ฌ๊ฐ ์ฌ์ฉ์์๊ฒ ํน์ ์๊ฐ๋(์คํ 7์~์์ ) ๋ชจ๋ ํญ๊ณตํธ ์ ๋ณด๋ฅผ ์ ๊ณต
- ์ฟผ๋ฆฌ ๋ชฉ์ : ๋ชจ๋ ์ด ๋ฐ์ดํฐ ํ์
- ์ด ๊ฒฝ์ฐ๋ ์ ์ฒด ํ์ ํต์งธ๋ก ์ฝ๋ ์์ ์ด๋ฏ๋ก Avro ๊ฐ์ ํ ๊ธฐ๋ฐ ํฌ๋งท์ด ํจ์ฌ ํจ์จ์ ์ ๋๋ค.
- Parquet/ORC๋ ์ด ๋จ์ ์ ์ฅ์ผ๋ก ์ธํด ์ ์ด์ ๋ชจ์ผ๋ ๋ฐ ์คํ๋ ค I/O ๋น์ฉ์ด ์ฆ๊ฐํฉ๋๋ค.
โ ์์ถ๋ฅ ์ฐจ์ด
Parquet์ ORC๋ ์ด ๊ธฐ๋ฐ ๊ตฌ์กฐ ๋๋ถ์ ์์ถ๋ฅ ์ด ๋์ต๋๋ค.
์ด ๋จ์๋ก ์ ์ฅ๋๋ฏ๋ก, ์ ์ฌํ ๊ฐ์ด ๋ฐ๋ณต๋๋ ์ด(์: ์ฑ๋ณ, ๊ตญ๊ฐ ์ฝ๋, ์ํ ํ๋๊ทธ ๋ฑ)์ ๋ฌถ์ด ์์ถํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ๊ตฌ์กฐ๋ ํนํ IoT์ฒ๋ผ ๋๋์ ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ ๋ ์คํ ๋ฆฌ์ง ํจ์จ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด, Avro๋ ํ ์ ์ฒด๋ฅผ ๋ฌถ์ด ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ค์์ฑ์ด ์ปค์ง๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ถ๋ฅ ์ด ๋ฎ์์ง๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
โ ์คํค๋ง ์งํ ์ง์ (Schema Evolution)
-
Avro๋ ์คํค๋ง ์งํ์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค.
๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ๋ ๋ฉํ๋ฐ์ดํฐ๋ JSON์ผ๋ก ํํํ๊ณ , ์ค์ ๋ฐ์ดํฐ๋ ๋ฐ์ด๋๋ฆฌ๋ก ์ ์ฅํ๋ฏ๋ก ์คํค๋ง ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์์ต๋๋ค. -
ORC๋ Hive์์ ๊ธด๋ฐํ ํตํฉ ๋๋ถ์ Parquet๋ณด๋ค ๋ ๋์ ์คํค๋ง ์งํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
Hive ๋ฉํ์คํ ์ด์์ ํธํ์ฑ๋ ๋ฐ์ด๋๋ฉฐ, ํ๋ ์ถ๊ฐ๋ ๋ณ๊ฒฝ์ ๋ํด ์๋์ ์ผ๋ก ์ ๋์ํฉ๋๋ค.
โ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ฐ๊ฒฐ ๊ธฐ์
-
Avro
Kafka์์ ๋ฉ์์ง๋ฅผ ์ง๋ ฌํํ๋ ํฌ๋งท์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ ์ ์ก ํฌ๋งท(wire format)์ผ๋ก๋ ์ ํฉํ๋ฉฐ, ๋ฐ์ดํฐ ๊ตํ์ ์ต์ ํ๋์ด ์์ต๋๋ค. -
Parquet
Cloudera ํ๊ฒฝ(CDH)์์ Impala์ ์์ฃผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, Spark, Drill, Hive ๋ฑ ๋ค์ํ ๋ถ์ ๋๊ตฌ์์ ํญ๋๊ฒ ์ง์๋ฉ๋๋ค. -
ORC
Hortonworks ๊ธฐ๋ฐ(HDP)์ Hive์์ ๊ธฐ๋ณธ ํฌ๋งท์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, Presto ๋ฑ์์๋ ์ง์๋ฉ๋๋ค.
โ Apache Spark๋ ์ด ์ธ ํฌ๋งท ๋ชจ๋๋ฅผ ์ง์ํ๋ฏ๋ก, ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ๊ฐ์ฅ ์ ํฉํ ํฌ๋งท์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
โ ํฌ๋งท๋ณ ์์ฝ ๋น๊ต
๊ตฌ๋ถ | Avro | Parquet | ORC |
---|---|---|---|
์ ์ฅ ๋ฐฉ์ | ํ ๊ธฐ๋ฐ (Row-based) | ์ด ๊ธฐ๋ฐ (Column-based) | ์ด ๊ธฐ๋ฐ (Column-based) |
์ต์ ํ ๋์ | ์ฐ๊ธฐ ์์ , ์ ์ก, Kafka | ์ฝ๊ธฐ ์์ , ๋ถ์ ์ฟผ๋ฆฌ | Hive ์ต์ ํ, ์์ถ ํจ์จ |
์์ถ ํจ์จ | ๋ณดํต | ๋์ | ๋งค์ฐ ๋์ |
์คํค๋ง ์งํ | ๊ฐ๋ ฅํจ | ์ ํ์ | ์๋์ ์ผ๋ก ์ฐ์ |
ํ์ฉ ํ๊ฒฝ | Kafka, ์ ์ก ํฌ๋งท | Impala, Spark, Drill | Hive, Presto, HDP |
โ Hadoop ์์ ๊ฐ ํฌ๋ฉง ์ฌ์ฉ ๋ฐฉ๋ฒ ( Hive ์์ )
๐ 1. TEXTFILE**
CREATE TABLE tb_text (
ymd STRING,
tag STRING,
cnt INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
์์ถ ์ค์ (INSERT ์ ์ ์ ์ฉ):
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-- ๋๋
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
๋จ์ ํ ์คํธ ์ ์ฅ์ ์ ํฉํ์ง๋ง, ๋๊ท๋ชจ ๋ถ์์๋ ๋นํจ์จ์ ์.
๐ 2. PARQUET
CREATE TABLE tb_parquet (
ymd STRING,
tag STRING,
cnt INT
)
STORED AS PARQUET;
์์ถ ์ค์ :
SET parquet.compression=SNAPPY;
-- ๋๋
SET parquet.compression=GZIP;
SET parquet.compression=UNCOMPRESSED;
์ด ๊ธฐ๋ฐ ํฌ๋งท์ผ๋ก, ๋ถ์ ์ฟผ๋ฆฌ ๋ฐ Spark ํ๊ฒฝ์ ์ต์ ํ๋จ.
Parquet ์ ๊ฒฝ์ฐ ๊ธฐ์กด์๋ ์๋์ฒ๋ผ ๋ฑ๋กํ์์.
CREATE TABLE tb_parquet (
ymd STRING,
tag STRING,
cnt INT
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat';
๊ทธ๋ฌ๋ 0.14๋ถํฐ๋ Parquet ๋ฅผ ์ง์ํด์ฃผ์ด์, STORED AS PARQUET;
์ผ๋ก ๋ฑ๋กํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ์๋์ ๊ฐ์ด ๋ฑ๋ก๋จ.
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
๐ 3. ORC
CREATE TABLE tb_orc (
ymd STRING,
tag STRING,
cnt INT
)
STORED AS ORC
TBLPROPERTIES ("orc.compress"="ZLIB");
-- ๋๋
-- TBLPROPERTIES ("orc.compress"="SNAPPY");
-- TBLPROPERTIES ("orc.compress"="NONE");
Hive์์ ๊ถ์ฅํ๋ ํฌ๋งท์ด๋ฉฐ, ๋์ ์์ถ๋ฅ ๊ณผ ์ฑ๋ฅ ์ ๊ณต.
๐ 4. AVRO
CREATE TABLE tb_avro (
ymd STRING,
tag STRING,
cnt INT
)
STORED AS AVRO;
์์ถ ์ค์ :
SET hive.exec.compress.output=true;
SET avro.output.codec=snappy;
-- ๋๋
SET avro.output.codec=deflate;
SET avro.output.codec=bzip2;
์คํค๋ง ์งํ๊ฐ ์์ฃผ ์ผ์ด๋๋ ํ๊ฒฝ (์: Kafka) ์ ์ ํฉ.
| ํฌ๋งท | Hive ๊ถ์ฅ ์ฌ๋ถ | ์์ถ ์ค์ ๋ฐฉ์ | ํน์ง ์์ฝ |
|โโโโ-|โโโโโ-|โโโโโ-|โโโโ|
| TEXTFILE | ๋ฎ์ | SET ๋ฐฉ์ | ๋จ์, ๋นํจ์จ์ |
| PARQUET | ๋์ | SET ๋ฐฉ์ | ๋ถ์ ์ฟผ๋ฆฌ ์ต์ |
| ORC | ๋งค์ฐ ๋์ | TBLPROPERTIES | Hive ์ต์ ํ |
| AVRO | ์ค๊ฐ ์ด์ | SET ๋ฐฉ์ | ์คํค๋ง ์งํ |
โ ํด๋น ๊ธ์, ํ๋ก ์์ฝ ์์คํ
์ ๋ํ ๊ฐ๋จํ ๋ด์ฉ์ ๊ณต๋ถํ๊ณ ๋ค๋ฃน๋๋ค. ๊ฐ ์์ฝ์์คํ
์ ๋ณด๋ค ๋ ์์ธํ ๋ด์ฉ์ ์ถํ ๊ณต๋ถํ์ฌ, ๋ฐ๋ก ํฌ์คํ
ํ ์์ ์
๋๋ค.
๐ 1.2. Apache Flume
๐ 1.3. Apache Sqoop
๐ 1.4. Apache Kerberos
๐ 1.5. Apache Hive
๐ 1.6. Apache Impala
๐ 1.7. Apache HBase
๐ 1.8. Apache Spark
๐ 1.9. Apache Oozie
๐ 1.10. Apache Zookeeper
๐ 1.11. Apache Crunch
๐ 1.12. ๊ทธ ์ธ ํ๋ก์ ํธ์, ํ๋ก์ ํธ์ ํฐ ์ข ๋ฅ
๐ 2. ํ๋ก์ ์ด์๊ณผ ๊ด๋ฆฌ
๐ 2.1. ํ๋ก์ ์ฃผ์ ์ค์ ํ์ผ๊ณผ, ์ค์ ๊ฐ
๐ 2.2. ์ค์ ํ๋ก ํด๋ฌ์คํฐ ๊ตฌ์ถ๊ณผ ๋ณด์
๐ 2.3. ํ์ ์์์ ํ๋ก์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
๐ 3. ๊ธฐํ ํ๋ก์ ๋ํด ์์์ผ ํ ๋ช ๊ฐ์ง
๐ 3.1. ํ๋ก I/O
๐ 3.2. Schema on Read vs Schema on Write
๐ 3.3. ํ๋ก์ ์ธ ๊ฐ์ง ๋ชจ๋
๐ 3.4. CDH
๐ 3.5. Cascading
๐ 3.6. ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์๋ ํ๋ก์ด ๋์ง ์๋ ์ด์ ?
๐ 4. ์ค์ ํ๋ก ๊ด๋ จ ๋ฉด์ ์ง๋ฌธ ์ฌ๋ก ๋ชจ์
โ ์ง๋ฌธ: Hadoop์ ์ฌ์ฉํ๋ ๋ฐ ์์ด ํํ ๋ฐ์ํ๋ ๊ณผ์ ๋ ๋ฌด์์ธ๊ฐ์?
โ
1. NameNode์ ๋จ์ผ ์ฅ์ ์ง์ ๋ฌธ์
Hadoop์ ์ด๊ธฐ ๊ตฌ์กฐ์์๋ NameNode๊ฐ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋จ๋
์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
๋ฐ๋ผ์ NameNode๊ฐ ์ฅ์ ๋ฅผ ์ผ์ผํค๋ฉด ์ ์ฒด ํด๋ฌ์คํฐ์ ์ด์์ด ์ค๋จ๋๊ณ , ์ต์
์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด High Availability(HA) ๊ตฌ์ฑ์ด ๋์
๋์์ง๋ง, ๊ธฐ๋ณธ ๊ตฌ์กฐ ์์ฒด๊ฐ ๊ฐ๋ ์ํ์ฑ์ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค.
โ
2. ๋ณด์ ์ทจ์ฝ์ฑ
๊ธฐ๋ณธ Hadoop์ ๋ณด์ ๊ธฐ๋ฅ์ด ์ ํ์ ์
๋๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ ์ ๊ทผ ์ ์ด๊ฐ ์ธ๋ถํ๋์ด ์์ง ์๊ณ , ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋์ง ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
Kerberos ๊ฐ์ ์ธ์ฆ ์์คํ
์ด ์์ง๋ง, ์ค์ ์ด ๋ณต์กํ๊ณ ์ ์ง ๋น์ฉ์ด ํฌ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ถ๊ฐ ๋ณด์ ๊ณ์ธต(Sentry, Ranger ๋ฑ)์ ๋์
ํด์ผ ์ค์ง์ ์ธ ๋ฐ์ดํฐ ๋ณดํธ๊ฐ ๊ฐ๋ฅํ์ง๋ง, ์ด๋ ์ด์ ๋ณต์ก๋๋ฅผ ๋์ด๋ ์์ธ์ด ๋ฉ๋๋ค.
โ
3. ์ค์๊ฐ ์ฒ๋ฆฌ ๋ฏธ์ง์
Hadoop์ ํต์ฌ ์ฒ๋ฆฌ ๋ชจ๋ธ์ธ MapReduce๋ ๋ฐฐ์น ์ฒ๋ฆฌ ๊ธฐ๋ฐ์
๋๋ค.
์ด ๋ฐฉ์์ ๋์ฉ๋ ๋ก๊ทธ ๋ถ์ ๋ฑ์๋ ํจ๊ณผ์ ์ด์ง๋ง, ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ ๋ถ์ ํฉํฉ๋๋ค.
๊ทธ๋์ Spark, Flink ๊ฐ์ ๋ณ๋์ ์ค์๊ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๊ฐ ์ด๋ฅผ ๋ณด์ํฉ๋๋ค.
โ
4. ์์ ํ์ผ ์ฒ๋ฆฌ ๋นํจ์จ
Hadoop์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ต์ ํ๋์ด ์์ต๋๋ค.
๊ฐ ํ์ผ๋ง๋ค ๋ฉํ๋ฐ์ดํฐ๊ฐ NameNode์ ์ ์ฅ๋๋ฉฐ, ํ์ผ ์๊ฐ ๋ง์์ง์๋ก NameNode ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ธ์ฆํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์์ ํ์ผ๋ค์ ๊ฐฏ์๊ฐ ๋์ด๋๋ฉด ์๋ต ์ง์ฐ ๋ฐ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Hadoop Archive ๋ฑ์ ์ ๊ทผ์ด ํ์ํฉ๋๋ค.
โ ์ง๋ฌธ: Hadoop์์ ๋ถ์ฐ ์บ์(Distributed Cache)์ ๋ชฉ์ ์ ๋ฌด์์ธ๊ฐ์?
Hadoop์ ๋ถ์ฐ ์บ์(Distributed Cache)๋ MapReduce ์์
์คํ ์ ๋ชจ๋ ๋
ธ๋์ ํ์ํ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ(์: JAR ํ์ผ, ์ค์ ํ์ผ, ์ฐธ์กฐ์ฉ ์์ ๋ฐ์ดํฐ ํ์ผ ๋ฑ)์ ๋ฏธ๋ฆฌ ๋ก์ปฌ์ ๋ฐฐํฌํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ธฐ๋ฅ์
๋๋ค.
HDFS์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฝ๋ ๋์ , ์์
์์ ์ ๋
ธ๋ ๋ก์ปฌ ๋์คํฌ์ ์บ์๋์ด ํ์ผ์ ๋ฐ๋ณต ๋ค์ด๋ก๋ํ์ง ์๋๋ก ๋ฐฉ์งํ๊ณ ,
์์ ์ฐธ์กฐ ํ์ผ์ ๋น ๋ฅด๊ฒ ์ฝ์ ์ ์์ด ์ฒ๋ฆฌ ์๋๊ฐ ๊ฐ์ ๋ฉ๋๋ค.
๋ํ Mapper/Reducer๊ฐ ๋์ผํ ์ฐธ์กฐ ํ์ผ์ ํ์ฉ ํ ์ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, MapReduce ์์
40๊ฐ๊ฐ ์๊ณ , ๊ฐ ์์
์ด ๋์ผํ ์์ ์ฐธ์กฐ ํ์ผ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฝ์ด์ผ ํ๋ค๋ฉด, ์ด ํ์ผ์ด HDFS์๋ง ์กด์ฌํ ๊ฒฝ์ฐ ๋งค๋ฒ ๋คํธ์ํฌ I/O๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ์ง๋ง ๋ถ์ฐ ์บ์์ ๋ฑ๋กํ๋ฉด ํด๋น ํ์ผ์ด ๊ฐ ๋
ธ๋ ๋ก์ปฌ ๋์คํฌ์ ๋ณต์ฌ๋์ด, ๋ชจ๋ ์์
์ด ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค.
โ ์ง๋ฌธ: Hadoop์ ๋ถ์ฐ ์บ์์ ์๋ ํ์ผ์ ์ ์ฉ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ป๊ฒ ๋๊ธฐํํ ์ ์๋์?
ํจ์ ์ง๋ฌธ์
๋๋ค.
๋ถ์ฐ ์บ์๋ Hadoop์์ ์์
์คํ ์ ์ ๋ชจ๋ ๋
ธ๋์ ๋์ผํ ํ์ผ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด๋๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด๋ ๋ณต์ฌ๋ ํ์ผ์ ์ฝ๊ธฐ ์ ์ฉ(read-only) ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ์คํ ์ค์๋ ๋ณ๊ฒฝํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์ฆ, ์ด๋ค ๋
ธ๋์์ ๋ถ์ฐ ์บ์์ ์๋ ํ์ผ์ ์์ ํ๋๋ผ๋, ๋ค๋ฅธ ๋
ธ๋์ ์บ์์๋ ์ ํ ๋ฐ์๋์ง ์์ต๋๋ค. ๊ฐ ๋
ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ํ์ผ์ ์์
์ด ์์๋ ๋์ ์ํ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
โ ์ง๋ฌธ: Hadoop์์ โ๋ฐ์ดํฐ ์ง์ญ์ฑ(Data Locality)โ์ด๋ ๋ฌด์์ธ๊ฐ์?
Hadoop์์ ๋ฐ์ดํฐ ์ง์ญ์ฑ์ด๋, ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค๋ฅธ ์์น๋ก ์ฎ๊ธฐ์ง ์๊ณ , ๊ณ์ฐ ์์
(Task)์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์์น๋ก ์ด๋์ํค๋ ๋ฐฉ์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ๊ฒฝ์์ ๋คํธ์ํฌ ์ ์ก ๋น์ฉ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ํต์ฌ ๊ฐ๋
์
๋๋ค.
๋น
๋ฐ์ดํฐ ํ๊ฒฝ์์๋ ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ์ ์์ด ๋งค์ฐ ๋ฐฉ๋ํ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ๋น์ฉ์ด ์๋นํ ํฝ๋๋ค. ๋ฐ๋ผ์ Hadoop์ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋ ๋์ , ๊ณ์ฐ์ ๋ฐ์ดํฐ๊ฐ ์์นํ ์๋ฒ(๋ฐ์ดํฐ ๋
ธ๋)์์ ์ํํจ์ผ๋ก์จ ์ ์ฒด ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ด๊ณ ์์คํ
ํจ์จ์ ๋์
๋๋ค.
Hadoop์ ์์
์ค์ผ์ค๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ ์์ ๊ท์น์ ๋ฐ๋ผ ์์
์ ์ค์ผ์ค๋งํฉ๋๋ค
- ๋ก์ปฌ(local): ๋จผ์ , ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๊ฐ์ ๋ ธ๋์์ ์์ ์ ์คํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ์ด์์ ์ธ ๊ฒฝ์ฐ์ ๋๋ค.
- ๋(local rack): ๋ง์ฝ ํด๋น ๋ ธ๋์ ์์ ์ ์คํํ ์ ์๋ค๋ฉด, ๊ฐ์ ๋(Rack) ๋ด์ ์๋ ๋ค๋ฅธ ๋ ธ๋์์ ์คํ์ ์๋ํฉ๋๋ค. ๊ฐ์ ๋์ ๋คํธ์ํฌ ์ง์ฐ์ด ์ ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์๊ฒฉ(other rack): ์์ ๋ฐฉ๋ฒ๋ค์ด ๋ชจ๋ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๋์ ์์นํ ๋ณต์ ๋ณธ์ด ์ ์ฅ๋ ๋ ธ๋์์ ์์ ์ ์คํํฉ๋๋ค.
์๋ฅผ๋ค๋ฉด, ์ด๋ค ํ์ฌ์์ ๊ณ ๊ฐ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ธฐ ์ํด Hadoop ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ก๊ทธ ๋ฐ์ดํฐ๋ logs.csv๋ผ๋ ์ด๋ฆ์ผ๋ก HDFS์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ์ด 300GB ํฌ๊ธฐ๋ก ์ธ ๋
ธ๋์ ๋ถ์ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.
Node1์๋ logs.csv์ ๋ธ๋ก 1์ด ์ ์ฅ๋์ด ์๊ณ , Node2์๋ ๋ธ๋ก 2, Node3์๋ ๋ธ๋ก 3์ด ์ ์ฅ๋์ด ์์ต๋๋ค. ๊ฐ ๋ธ๋ก์ ๋ณต์ (replication factor = 3) ๋์ด, ์ธ ๋
ธ๋ ์ค ๋ ๊ณณ์ ์ถ๊ฐ๋ก ๋ณต์ฌ๋ณธ์ด ์กด์ฌํฉ๋๋ค.
Hadoop์ ๋จผ์ ๊ฐ ๋ธ๋ก์ ์ ์ฅํ๊ณ ์๋ ๋
ธ๋์์ ํด๋น ๋ธ๋ก์ ์ฒ๋ฆฌํ๋ ์์
์ ์คํํ๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Block 1์ ์ฒ๋ฆฌํ๋ ์์
์ ์ฐ์ Node1์์ ์คํ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ ๋์คํฌ์์ ๋ฐ๋ก ์ฝํ๋ฏ๋ก ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ง์ฝ Node1์ ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํด์ ์์
์ ์คํํ ์ ์๋ค๋ฉด, Hadoop์ Block 1์ ๋ณต์ ๋ณธ์ด ์๋ ๋ค๋ฅธ ๋
ธ๋์์ ์คํ์ ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Block 1์ ๋ณต์ ๋ณธ์ด Node2์๋ ์๋ค๋ฉด, Hadoop์ Node2์์ ์์
์ ์คํํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ๋ก์ปฌ ๋์คํฌ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ฑ๋ฅ์ด ์ข์ต๋๋ค.
๋ง์ฝ Block 1์ ๊ฐ์ง ์ด๋ค ๋
ธ๋์์๋ ์์
์ ์คํํ ์ ์๋ค๋ฉด, Hadoop์ ๊ฐ์ ๋(rack) ๋ด์ ๋ค๋ฅธ ๋
ธ๋์์ ์์
์ ์คํํฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ฌ๋์ง๋ง, ๋ ๋ด๋ถ ํต์ ์ ์๋์ ์ผ๋ก ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์์ค์ด ํฌ์ง ์์ต๋๋ค.
๊ฐ์ฅ ๋์ ๊ฒฝ์ฐ๋, ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ๋
ธ๋๊ฐ ๋ชจ๋ ๋ฐ์๊ณ , ๋ค๋ฅธ ๋์ ์๋ ๋
ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ก ๋ฐ์์์ผ ํ ๋์
๋๋ค. ์ด ๊ฒฝ์ฐ๋ ๋คํธ์ํฌ ๋ณ๋ชฉ์ด ๋ฐ์ํ ์ ์๊ณ , ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง๋๋ค.
โ ์ง๋ฌธ: MapReduce๊ฐ ๊ถ์ฅ๋์ง ์๋ ๊ฒฝ์ฐ๋?
๋ฐ๋ณต ์ฒ๋ฆฌ ์์
์๋ MapReduce ๊ฐ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
MapReduce๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ๋งค์ฐ ํจ๊ณผ์ ์ธ ๋ฐฉ์์
๋๋ค. ํ์ง๋ง ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ๋ฌ ๋ฒ ์ฒ๋ฆฌํด์ผ ํ๋ ์์
์๋ ์ ๋ง์ง ์์ต๋๋ค.
MapReduce๋ ์์
ํ๋๊ฐ ๋๋ ๋๋ง๋ค ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ HDFS ๊ฐ์ ๋์คํฌ์ ์ ์ฅํ๊ณ , ๋ค์ ์์
์ ๊ทธ๊ฒ์ ๋ค์ ๋์คํฌ์์ ์ฝ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๋์คํฌ ์
์ถ๋ ฅ์ ๋คํธ์ํฌ๋ณด๋ค๋ ํจ์ฌ ๋๋ฆฌ๊ณ , CPU๋ ๋ฉ๋ชจ๋ฆฌ์ ๋นํด์๋ ๋น๊ตํ ์ ์์ ์ ๋๋ก ๋๋ฆฝ๋๋ค. ์ด๋ฐ ๊ตฌ์กฐ ๋๋ฌธ์, ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ ์ฝ๊ณ ์ฒ๋ฆฌํด์ผ ํ๋ ์์
์ ๋งค๋ฒ ๋์คํฌ I/O ๋น์ฉ์ด ๋ฐ์ํ๋ฏ๋ก ๋งค์ฐ ๋นํจ์จ์ ์
๋๋ค.
๐ 5. ์ ์ฐจ ์ฌ๋ผ์ง๋ ํ๋ก, ๊ทธ๋ฌ๋ ํ๋ก์ ์๊ฒ๋ผ๋ ๊ณต๋ถํด์ผ ํ๋ ์ด์
โ๏ธ ๊ฒฐ๋ก
๐ ๊ณต๋ถ ์ฐธ๊ณ ์๋ฃ
https://ngela.tistory.com/111