๐ฅ
ํ๋ก ์์ฝ์์คํ ๋ณธ๋ฌธ
ํ๋ก, ํ๋ก ์์ฝ์์คํ
- ํ๋ก
๋์ฉ๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์ฒ๋ฆฌํ ์ ์๋ ์คํ์์ค ํ๋ ์์ํฌ
๋๋์ผ๋ก ํ์ฅ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์ ์ฌ์ฉ
์ปดํจํ ๋ถ์ ์ํฌ๋ก๋๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ, ๋์ ์์ค์ ๋ด๊ตฌ์ฑ, ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ ์ ๊ณต - ํ๋ก 2.0
YARN ์ถ๊ฐ
MapReduce ์ด์ธ์ Spark, Giraph ๋ฑ ๋ค๋ฅธ ๋ถ์ฐ ์ฒ๋ฆฌ ๋ชจ๋ธ ์ํ ๊ฐ๋ฅ - ํ๋ก ์์ฝ ์์คํ
ํ๋ก์ ์ด๋ฃจ๊ณ ์๋ ๋ค์ํ ์๋ธ ํ๋ก์ ํธ๋ค์ ๋ชจ์
ํ๋ก์ ํ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ๋ฌ๊ฐ์ง ์ํํธ์จ์ด๊ฐ ์ถ๊ฐ๋์๋ค.
๋ฐ์ดํฐ ์์ง
- ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์์ง
๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ค.
i. Chukwa
๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ๋ชจ๋ํฐ๋ง์ ์ํ ๋ฐ์ดํฐ ๋ก๊ทธ ์์ง ์๋ฃจ์
๋ถ์ฐ๋์ด ์๋ ๋ ธ๋๋ค์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์ง
๋ชจ๋ํฐ๋ง ๋ก๊ทธ, ์ดํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ, ํ๋ก ๋ก๊ทธ ๋ฑ ๋ถ์ฐ ์์คํ ๋ชจ๋ํฐ๋ง์ ์ํ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ค.
ii. Flume
๋๋์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์งํด ์ ์กํ ์ ์๋ ์๋ฃจ์
์ฐ์์ ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์์งํ๊ณ ์ ์ก, HDFS์ ์ ์ฅ
ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ฅ์น๋ก๋ถํฐ ๋ก๊ทธ ํ์ผ์ ์์งํ๊ณ HDFS์ ๊ฐ์ ์ค์ ์ ์ฅ์์ ์ ์ฅํ๋ ๋ก๊น ์์คํ ์ ์ ํฉ
iii. scribe
๋๋์ ์๋ฒ๋ก๋ถํฐ ์ค์๊ฐ์ผ๋ก ์คํธ๋ฆฌ๋ฐ ๋ก๊ทธ ์์ง
๋ค๋ฅธ ๋ก๊ทธ ์์ง ์์คํ ๋ณด๋ค ๋น๊ต์ ๊ฐ๋จํ ๊ตฌ์กฐ
→ Message queue์ ์์ธ ๋ฉ์์ง๋ฅผ DB์ ์ ์ฅ, ์ ์ฅ ์คํจ ์ ๋ก์ปฌ์ ์ ์ฅ ํ DB๊ฐ ๋ณต๊ตฌ๋์์ ๋ ๋ค์ DB์ ์ ์ฅํ๋ ๋ถ๋ถ๊น์ง๋ง ๋ณด์ฅํ๋ฏ๋ก ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ๋ค.
c++๋ก ๊ฐ๋ฐ๋์ด ๋ค๋ฅธ ์์คํ ๋ณด๋ค 3~5๋ฐฐ ๋น ๋ฅธ ์ฑ๋ฅ
facebook์์ ๊ฐ๋ฐํ์ผ๋ ํ์ฌ facebook์์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ์ ์ด ๊ฑฐ์ ์๋ ์ํ์ด๋ค. - DBMS ๋ฐ์ดํฐ ์์ง
ํ DBMS ์ ์ฅ์์์ ๋ค๋ฅธ ์ ์ฅ์๋ก ์ ์กํ๋ค.
i. Sqoop
RDB์ฒ๋ผ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์๋ฃจ์
๋ณ๋ ฌํ๋ ๋ฐ์ดํฐ ์ ์ก์ ํตํด ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฅ
ii. Hiho
Sqoop๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ก ์๋ฃจ์
ํ์ง๋ง Oracle๊ณผ MySQL์ ๋ฐ์ดํฐ ์ ์ก๋ง ์ง์ - ๋ถ์ฐ ๋ฉ์์ง ์ฒ๋ฆฌ
i. Kafka
๋์ฉ๋์ ์ค์๊ฐ ๋ก๊ทธ ์ฒ๋ฆฌ์ ํนํ๋ ๋ถ์ฐ ๋ฉ์์ง ์์คํ
๋ก๊ทธ๋ฐ์ดํฐ, ์ด๋ฒคํธ ๋ฉ์์ง ๋ฑ API๋ก ํธ์ถํ ๋ ๋ณด๋ด๋ ๋ฐ์ดํฐ๋ค์ ์ฒ๋ฆฌ
๋ฐ์ดํฐ ์์ค์ ๋ง๊ธฐ ์ํด์ ๋์คํฌ์ ์ ์ฅ
kafka cluster๋ ์ค๊ฐ์์ broker ์ญํ ์ ์ํ.
broker์ ๋ถ์ฐ ์ฒ๋ฆฌ๋ zookeeper๊ฐ ์ํํ๋ฏ๋ก kafka๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฐ๋์ zookeeper๊ฐ ์คํ๋์ด์ผ ํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์ ์ฅ
- HDFS
GFS ๊ธฐ๋ฐ ํ๋ก์ ๋ํ์ ์ธ ํ์ผ ์์คํ
๋์ฉ๋์ ํ์ผ์ ์ ์ฅํ ์ ์๋ค.
< ํน์ง >
ํ์ผ์ block ๋จ์๋ก ๋ถํ ํด์ ๋ณด๊ด → ๋ธ๋ก์ ์ฌ์ฉํด ์คํ ๋ฆฌ์ง์ ์๋ธ ์์คํ ์ ๋จ์ํ๊ฒ ๋ง๋ฆ. ๋ธ๋ก ์ฌ์ด์ฆ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 64mb ํน์ 128mb.
๋ธ๋ก์ ์ฌ๋ฌ ๋ ธ๋์ ๋ถํ ํด์ ์ ์ฅ(๊ธฐ๋ณธ ๋ณต์ ๊ฐ์ = 3) → ๋ถ์ฐ ํ์ผ ์์คํ
๋ฒ์ฉ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํด ์ข์ ํ์ฅ์ฑ
ํ์ผ ์์คํ ์ ์ ๊ทผํ๊ธฐ ์ํ ์ ์คํฌ๋ฆฝํธ ์ ๊ณต
๋ณ๊ฒฝ์ ํ์ฉํ์ง ์๋ ์๊ฒฉํ ์ํคํ ์ณ์ด๋ฉฐ Write-once, read-many case์ ์ ํฉํ๋ค.
data node๋ ์ค์ ๋ก ๋ถ์ฐ๋ ๋ฐ์ดํฐ(๋ธ๋ก)๋ฅผ ์ ์ฅ
name node๋ data๋ค์ ๋ํ metadata ์ ์ฅ
→ ์ธ๋ถ์์ ํน์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์ ํ ๋๋ Name node์ metadata๋ฅผ ์ฝ๊ณ ๋ฐ์ดํฐ์ ๋ํ ์์น๋ฅผ ์ฐพ์ data node์ ์ ๊ทผํด์ผ ํ๋ค.
job tracker๋ TaskTracker์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ , MapReduce job์ ๋ฐฐํฌ/์ค์ผ์ฅด๋ง/๋ชจ๋ํฐ๋ง ํ๋ ์ญํ ์ ํ๋ค.
TastTracker๋ Task๋ค์ ์ค์ ๋ก ์ฒ๋ฆฌํ๋ ์ญํ ์ด๋ค. - HBase
HDFS ์์ ๋ง๋ค์ด์ง NoSQL ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
< ํน์ง >
์ปฌ๋ผํจ๋ฐ๋ฆฌ๋ก ๊ตฌ์ฑ๋ ์คํค๋ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค → ์กฐ์ธ, ์ธ๋ฑ์ค๊ฐ ์์
HDFS์ ๋ํ ์ค์๊ฐ ๋๋ค ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ธฐ๋ฅ ์ ๊ณต - Kudu
ํ๋ก ํ๋ซํผ์ฉ์ผ๋ก ๊ฐ๋ฐ๋ ์ปฌ๋ผ ๊ธฐ๋ฐ ์คํ ๋ฆฌ์ง
< ํน์ง >
Primary Key๋ฅผ ์ ๊ณตํ๊ณ ๋ด๋ถ์ ์ผ๋ก B+ ํธ๋ฆฌ๋ก ์ ์ฅ๋์ด ์์ผ ๋ฐ๋ฆฌ์ด ์์ค์ ๋น ๋ฅธ ์ก์ธ์ค ๊ฐ๋ฅ
์์ฐจ ์ฝ๊ธฐ, ๋๋ค ์ฝ๊ธฐ ๋ชจ๋ ํจ์จ์
๊ฐ๋จํ CRUD ์ฐ์ฐ ๋ฑ์ ์ ๊ณตํ๋ join, group by์ ๊ฐ์ ๋ณต์กํ ์ฐ์ฐ์ ์ ๊ณตํ์ง ์์ impala์ ๊ฐ์ ๋ณ๋์ ์ง์์ฒ๋ฆฌ์์ง ํ์ - ํ์ผ ํฌ๋งท
i. Parquet
์ค์ฒฉ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ์ปฌ๋ผ ๊ธฐ์ค ์ ์ฅ ํฌ๋งท
์ปฌ๋ผ ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ธ์ฝ๋ฉ ํจ์จ๊ณผ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ๋์
์คํค๋ง๋ ํ์ผ ๋ง์ง๋ง์ ์ ์ฅ
ii. Avro
๋ฐ์ดํฐ ์ง๋ ฌํ ํฌ๋งท
์ง๋ ฌํ: ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ค๋ธ์ ํธ ์ํ๋ฅผ ๋์ผํ๊ฑฐ๋ ๋ค๋ฅธ ์ปดํจํฐ ํ๊ฒฝ์ ์ ์ฅํ๊ณ ๋์ค์ ์ฌ๊ตฌ์ฑํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ๋ ๊ณผ์
ํ์ฑํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ๋ค๋ฅธ ํ๋ก ์์คํ ๊ณผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
์คํค๋ง๋ json, ๋ฐ์ดํฐ๋ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท์ผ๋ก ์ธ์ฝ๋ฉ
์คํค๋ง๋ ํค๋์ ์ ์ฅ
row ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅ๋๋ฏ๋ก full scan ์ฟผ๋ฆฌ๊ฐ ๋ง๊ฑฐ๋ write๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ํธ์ด ์ ๋ฆฌ
๋ฐ์ดํฐ ์ฒ๋ฆฌ
- MapReduce
ํ๋ก ํด๋ฌ์คํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์์คํ . Map(๋งคํ) + Reduce(์ฒ๋ฆฌ)
๊ธฐ์กด์ MR1์์๋ ๋ฆฌ์์ค ๊ด๋ฆฌ, ์ค์ผ์ค๋ง, MapReduce job์ด ๋ชจ๋ MapReduce ํด๋ฌ์คํฐ ์์์ ์ํ๋์๊ธฐ ๋๋ฌธ์ ์ฐ๋๋ฌธ์ ์ ๋ณ๋ชฉ ํ์์ด ์๊ธด๋ค. → YARN ๋ฑ์ฅ - Yarn
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ์คํํ๊ธฐ ์ํ ํด๋ฌ์คํฐ ์์๊ณผ ์ค์ผ์ฅด๋ง์ ์ํ ํ๋ ์์ํฌ
MapReduce๋ก๋ถํฐ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ก ์ค์ผ์ฅด๋ง ์ญํ ์ Yarn๊ณผ ๋ถ๋ฆฌํ๋ค.
i. ResourceManager
Yarn ํด๋ฌ์คํฐ์ master ์๋ฒ. ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ํ ๋น(์ค์ผ์ฅด๋ง)ํ๋ค.
ii. NodeManager
Yarn ํด๋ฌ์คํฐ์ worker ์๋ฒ. ResourceManager๋ฅผ ์ ์ธํ ๋ชจ๋ ์๋ฒ์ ์ฌ๋ผ๊ฐ ์์ผ๋ฉฐ Container๋ฅผ fork ์ํค๊ณ ์คํ, ๋ชจ๋ํฐ๋งํ๋ค.
ResourceManager ํ๋์ ์ฌ๋ฌ๊ฐ์ ApplicationMaster๋ก ๊ตฌ์ฑ๋์ด ๋ณ๋ชฉํ์์ ๋ฐฉ์งํ๋ค.
Global ResourceManager๊ฐ ์กด์ฌํด ์์ํ์ฉ๋๊ฐ ๋๊ณ ์๋๊ฐ ๋น ๋ฅด๋ค.
Yarn์ด ์ค์ผ์ฅด๋ง๊ณผ ์์๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ฏ๋ก MapReduce ์ด์ธ์ ๋ค๋ฅธ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ซํผ์ ์ฌ์ฉํ ์ ์๋ค.
MapReduce with Yarn
1 client๊ฐ ResourceManager(RM)์๊ฒ job ID๋ฅผ ์์ฒญํ๋ค. RM์ job ID๋ฅผ client์๊ฒ ๋๊ฒจ์ค๋ค. ์ดํ RM์๊ฒ job ์คํ์ ์์ฒญํ๋ค. 2 RM์ด job queue์์ ํด๋น job์ ์ ํํ๋ฉด NodeManager(NM)์๊ฒ ApplicationMaster(AM)์ ์คํ์ ์์ฒญํ๋ค. 3 AM์ ์คํํ๋ค. 4 HDFS๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ splitํ๊ณ split ๋น ํ ๊ฐ์ map(task)์ ๋ง๋ ๋ค. ์ด๋ AM์ ์ด๋ป๊ฒ ๋งต๋ฆฌ๋์ค๋ฅผ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋๋ฐ, job์ด ์๋ค๋ฉด ์๋ก์ด ์ปจํ ์ด๋๋ฅผ ํ ๋น๋ฐ๊ณ ์คํํ๋ ๊ฒ์ด ์ค๋ฒํค๋๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ ธ๋ ์์์ ๋๋ฆฌ๊ธฐ๋ก ๊ฒฐ์ 5 job์ด ์์ง ์๋ค๋ฉด RM์๊ฒ ๋ฆฌ์์ค ์์ฒญ. RM์ splits๊ฐ ์ด๋์ ์์นํด ์๋์ง ์ฌ๋ฌ ์ ๋ณด(NM์ heartbeats ๋ฑ)์ ํ ๋๋ก ์ด๋ค ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ค. ์ ์ ํ ๋ ธ๋๊ฐ ์๋ค๋ฉด ๋๋ค์ผ๋ก ํ ๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ AM์๊ฒ ์ ๋ฌํ๋ค. 6 AM์ ํ ๋น๋ฐ์ NM์๊ฒ container ์คํ์ ์์ฒญํ๋ค. 7 NM์ด container๋ฅผ ์คํํ๋ฉด YARN child๊ฐ ์คํ๋๋ค. YARN child๋ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๋ค๋ฅธ ์์คํ ๊ณผ ๋ถ๋ฆฌ๋์ด์ ์คํ๋๋ค. Yarn child๋ HDFS์์ ํ์ํ job resources๋ฅผ ๊ฒ์ํ๊ณ ์ฝ๋์ ํจ๊ป ๋งต ํน์ ๋ฆฌ๋์ค๋ฅผ ์ํํ๋ค.
job์ด ์คํ๋ ํ์ yarn child๋ AM์๊ฒ 3์ด์ ํ ๋ฒ์ฉ progress report๋ฅผ ๋ณด๋ธ๋ค. AM์ ์ด report๋ค์ ํฉ์ณ์ client์๊ฒ ๋ฐ๋ก ๋ณด๋ธ๋ค. ์ด ๊ณผ์ ์ ํตํด client๋ ์์ ์งํ์ ๋ํด ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค. - Spark
๊ณ ์ก ๋ฒ์ฉ ๋ถ์ฐ ์ปดํจํ ํ๋ซํผ
In-memory ์ปดํจํ ์ผ๋ก ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋๋ฅผ ๋ณด์ฌ์ค๋ค. → ์ค์๊ฐ ๋ถ์ ๊ฐ๋ฅ
์ผ๊ด ์ฒ๋ฆฌ ๊ธฐ๋ฅ, ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ, ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ๋จ์ผ ํ๋ ์์ํฌ๋ก ํตํฉํด ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๋ค.
Lazy Execution์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๋ค.
๋ถ์ฐ ๋ฐ์ดํฐ ์๋ฃ๊ตฌ์กฐ
i. RDD
Immutable data๋ก ๋ฐ์ดํฐ ์์ ์ด ์ด๋ ต๋ค.
transformation/action api๋ฅผ ์ง์ํ๋ค.
transformation ๊ณผ์ ์ DAG๋ก ์ ์ฅํ๋ค. → ์ฅ์ ๋ฐ์ ์ DAG๋ฅผ ํตํด ๋ณต๊ตฌ ๊ฐ๋ฅ (Fault Tolerance)
ii. Dataframe/Dataset
Spark 2.0๋ถํฐ ๋ api๊ฐ ๋ณํฉ๋จ
RDD์ ์ ์ฌํ ํน์ง์ ๊ฐ์ง๋ฉฐ ์คํค๋ง๊ฐ ์๋ค.
์ปดํ์ผ ์์ ์ ์๋ฌ๋ฅผ ์ฐพ์ ์ ์๋ค.
์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์ action ๋จ๊ณ์์ ์ฟผ๋ฆฌ ์ต์ ํ๊ฐ ๊ฐ๋ฅํ๋ค. - Mahout
๊ธฐ๊ณํ์ต ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋ ๋จธ์ ๋ฌ๋์ ์ํ ํ๋ ์์ํฌ
์คํํฌ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด MLlib์ ์ฌ์ฉํ๋๊ฒ ๋ ์ข์ ๊ฒ ๊ฐ๋ค. - Pig
ํ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ ์งํฉ์ ๋ถ์ํ๊ธฐ ์ํ ํ๋ซํผ
์์ฒด์ธ์ด 'Pig Latin'์ ํตํด ๋ณต์กํ MapReduce ํ๋ก๊ทธ๋๋ฐ์ ํผํ๊ณ ์ฝ๊ฒ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ์ ์๋ค.
Pig ์์ง ๋ด์์ Pig Latin ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํด MapReduce๋ก ๋ณํ
๊ทธ๋ฌ๋ ๋งต๋ฆฌ๋์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๋์ํ๋๋ก ํ๊ฒ ํ๊ธฐ ์ํด์๋ ์ด์ฐจํผ ๋งต๋ฆฌ๋์ค๋ฅผ ์ดํดํด์ผ ํ๋ค.
SQL on Hadoop
๋ํํ ์ง์ ์ฒ๋ฆฌ: ์ ์ด~์ ๋ถ์ด ๊ฑธ๋ฆฌ๋ ์งง์ ์๊ฐ์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ์ ์ ํฉ
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค: ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋น๊ต์ ๊ธด ์๊ฐ์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ์ ์ ํฉ
- Hive
ํ๋ก์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ํจํค์ง์ด๋ฉฐ ๋ฐ์ดํฐ ์์ฝ, ์ฟผ๋ฆฌ, ๋ถ์์ ์ ๊ณตํ๊ธฐ ์ํด ํ๋ก ์์ ๊ตฌ์ถ
๋งต๋ฆฌ๋์ค์ ์์ ์ธ์ด์ด๋ฉฐ ์ ํํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
SQL๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋งต๋ฆฌ๋์ค ์ก์ผ๋ก ๋ณํ๋์ด ์คํ๋๋ค. - Impala
HDFS์์ ๋์ํ๋ ์ฆ๊ฐ์ ์ธ ์ค์๊ฐ SQL ์ง์ ์์คํ
CPU ๋ถํ๊ฐ ๊ฐ์ํด ๊ฐ์ํ ๋์ญํญ ๋งํผ I/O๋ฅผ ์ํํ ์ ์์ I/O ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ Hive๋ณด๋ค 3~4๋ฐฐ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
๋งต๋ฆฌ๋์ค ํ๋ ์์ํฌ๋ก์ ์คํ์ด ๋นํจ์จ์ ์ธ ์ฟผ๋ฆฌ(1๊ฐ ์ด์์ join ๋ฑ)์์๋ 7~45๋ฐฐ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
ํ๋ก์ธ์ค
i. impalad process: ๋ถ์ฐ ์ง์ ์์ง ์ญํ ์ ๋ด๋นํ๋ฉฐ, ๋ฐ์ดํฐ ๋ ธ๋ ์์์ ์ฟผ๋ฆฌ์ ๋ํ ๊ณํ ์ค๊ณ์ค ใ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์์ ์ ํ๋ค.
ii. impala state store: ๊ฐ ๋ฐ์ดํฐ ๋ ธ๋์์ ์ํ๋๋ impalad process์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ณ ๋ณ๊ฒฝ์ ์ ๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค์ด๋ค.
๊ธฐ์กด ๋งต๋ฆฌ๋์ค ๋์ impalad ํ๋ก์ธ์ค๊ฐ ํด๋ฌ์คํฐ ๋ด ๋ชจ๋ ๋ฐ์ดํฐ ๋ ธ๋ ์์์ ์ง์๋ฅผ ์ฒ๋ฆฌํ๋ฏ๋ก ๋งต๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ๋ Hive๋ณด๋ค ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
๊ธฐํ ํ๋ ์์ํฌ
- Zookeeper (๋ถ์ฐ ์ฝ๋๋ค์ดํฐ)
ํ๋์ ์๋ฒ์์ ๋ชจ๋ ์์ ์ด ์งํ๋๋ฉด ๊ทธ ์๋ฒ๊ฐ SPOF๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ๋ถ์ ์๋ฒ ๊ด๋ฆฌ ๊ธฐ์ ์ด ํ์ํ๋ฐ, zookeeper๊ฐ ์ ๊ณต
๋ถ์ฐ ํ๊ฒฝ์์ ์๋์ ๊ฐ์ ์๋ฒ ๊ฐ ์ํธ ์กฐ์ ์ด ํ์ํ ๋ค์ํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
* ํ๋์ ์๋ฒ์ ์๋น์ค๊ฐ ์ง์ค๋์ง ์๋๋ก ์๋ง๊ฒ ๋ถ์ฐํด ๋์ ์ฒ๋ฆฌ
* ์๋ฒ๋ผ๋ฆฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋๊ธฐํ ํด ๋ฐ์ดํฐ ์์ ์ฑ์ ๋ณด์ฅ
* ์ด์ ์๋ฒ ์คํจ์ ๋ค๋ฅธ ๋๊ธฐ ์ด์ ์๋ฒ๋ฅผ ์ด์ฉ
* ๋ถ์ฐํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ์๋ฒ์ ํ๊ฒฝ ์ค์ ๊ด๋ฆฌ - Oozie (์ํฌํ๋ก์ฐ)
Workflow scheduler ํ๋ ์์ํฌ๋ก ๋งต๋ฆฌ๋์ค ์ก์ ์ฐ๊ฒฐํ ๋ ๊ฐ ์ก๋ค์ ์์๊ณผ ์ข ๊ฒฐ, ๋ถ๊ธฐ์กฐ๊ฑด ๋ฑ์ ์๋ํ/์ค์ผ์ฅด๋งํ๋ ์๋ฃจ์
์๋์ ๊ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
* Scheduling: ํน์ ์๊ฐ/๊ฐ๊ฒฉ์ ์ก์ ์ํ
* Coordinating: ์ด์ ์ก์ ์๋ฃ ํ ๋ค์ ์ก์ ์์
* Managing: ์ก์ ์ํ ์๊ฐ/๋จ๊ณ ์ ์ฅ ๋ฑ - Zeppeling (๋ฐ์ดํฐ ์๊ฐํ)
์น ๊ธฐ๋ฐ ์ํฌ ์คํ์ด์ค์ ๋ค์ํ ์๋ฃจ์ ์ API, ์ฟผ๋ฆฌ ๋ฑ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์น์ ๋ณด์ฌ์ค๋ค. - Hue (๋ชจ๋ํฐ๋ง)
ํ๋ก ์์ฝ ์์คํ ์ ์ง์์ ์ํ ์น ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
→ ์๊ฐํ ๋๊ตฌ, job scheduling์ ์ํ ์ธํฐํ์ด์ค, ํ๋ก ๋ชจ๋ํฐ๋ง ๋ฑ ์ ๊ณต
'๋ฐ์ดํฐ > ํ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
parquet ํ์ผ ์ ๋ณด ๋ณด๊ธฐ (0) | 2022.10.05 |
---|---|
[CM] Yarn Node Manager ์ถ๊ฐ ์ ava.lang.IllegalArgumentException: java.net.UnknownHostException: HOSTNAME (0) | 2022.05.13 |
Python์ ํตํด impala ์ ์ (0) | 2022.03.03 |
Apache Kafka (0) | 2022.02.11 |
Apache Flink (0) | 2022.02.11 |