๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Apache Spark์ Hadoop์ ์ํคํ ์ฒ, ์ฑ๋ฅ, ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋ฏธ๋ ๋ํฅ์ ๊ธ๋ก๋ฒ ๋ ์์ธต์ ๋์์ผ๋ก ์ฌ์ธต ๋น๊ตํฉ๋๋ค.
๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ: Apache Spark vs. Hadoop - ์ข ํฉ ๋น๊ต
๋ฐ์ดํฐ์ ์ด ๋น ๋ฅด๊ฒ ํ์ฅ๋๋ ์๋์, ๋น ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ๋ ๋ฅ๋ ฅ์ ์ ์ธ๊ณ ์กฐ์ง์ ์์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ๋ถ์ผ์์ ๋ ๊ฐ์ง ์ง๋ฐฐ์ ์ธ ํ๋ ์์ํฌ๋ Apache Spark์ Hadoop์ ๋๋ค. ๋ ๋ค ๋ถ์ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋์์ง๋ง, ์ํคํ ์ฒ, ๊ธฐ๋ฅ ๋ฐ ์ฑ๋ฅ ํน์ฑ์์ ํฌ๊ฒ ๋ค๋ฆ ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ Spark์ Hadoop์ ์์ธํ ๋น๊ตํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ , ์ฝ์ ๋ฐ ์ด์์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ๊ตฌํฉ๋๋ค.
๋น ๋ฐ์ดํฐ์ ๊ทธ ๊ณผ์ ์ดํดํ๊ธฐ
๋น ๋ฐ์ดํฐ๋ "5๊ฐ์ง V"์ธ Volume(๊ท๋ชจ), Velocity(์๋), Variety(๋ค์์ฑ), Veracity(์ ํ์ฑ), Value(๊ฐ์น)๋ก ํน์ง์ง์ด์ง๋๋ค. ์ด๋ฌํ ํน์ง์ ์ ํต์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์๋นํ ๊ณผ์ ๋ฅผ ์ ์ํฉ๋๋ค. ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ, ์์ฑ๋๋ ์๋, ๋ค์ํ ํ์, ๊ทธ๋ฆฌ๊ณ ๋ด์ฌ๋ ๋ถ์ผ์น ๋ฐ ๋ถํ์ค์ฑ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ๋์ฑ์ด, ์ด ๋ฐ์ดํฐ์์ ์๋ฏธ ์๋ ๊ฐ์น๋ฅผ ์ถ์ถํ๋ ค๋ฉด ์ ๊ตํ ๋ถ์ ๊ธฐ์ ๊ณผ ๊ฐ๋ ฅํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ง์กด๊ณผ ๊ฐ์ ๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค. ์ด ํ๋ซํผ์ ๊ณ ๊ฐ ํ๋, ์ ํ ์ฑ๋ฅ ๋ฐ ์์ฅ ๋ํฅ์ ๋ํ ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค. ์ถ์ฒ์ ๊ฐ์ธํํ๊ณ , ๊ฐ๊ฒฉ์ ์ต์ ํํ๋ฉฐ, ์ฌ๊ณ ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ด ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๋ค.
Hadoop ์๊ฐ: ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ๊ตฌ์
Hadoop์ด๋ ๋ฌด์์ธ๊ฐ์?
Apache Hadoop์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ถ์ฐ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋ ์คํ ์์ค ํ๋ ์์ํฌ์ ๋๋ค. MapReduce ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์ ์ฅ์ ์ํด Hadoop Distributed File System (HDFS)์ ํ์ฉํฉ๋๋ค.
Hadoop ์ํคํ ์ฒ
- HDFS (Hadoop Distributed File System): ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ถ์ฐ ํ์ผ ์์คํ ์ ๋๋ค. HDFS๋ ๋์ฉ๋ ํ์ผ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ ๋ณต์ ๋ฅผ ํตํด ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
- MapReduce: ์ฒ๋ฆฌ ์์ ์ Map๊ณผ Reduce์ ๋ ๋จ๊ณ๋ก ๋๋๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ ๋ฐ ์คํ ํ๋ ์์ํฌ์ ๋๋ค. Map ๋จ๊ณ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ณ , Reduce ๋จ๊ณ๋ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณํฉ๋๋ค.
- YARN (Yet Another Resource Negotiator): ์ฌ๋ฌ ์ฒ๋ฆฌ ์์ง(MapReduce ๋ฐ Spark ํฌํจ)์ด ๋์ผํ ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ํ๋ ๋ฆฌ์์ค ๊ด๋ฆฌ ํ๋ ์์ํฌ์ ๋๋ค.
Hadoop ์๋ ๋ฐฉ์
Hadoop์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ ์์ ์กฐ๊ฐ์ผ๋ก ๋๋์ด ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ๋ ธ๋์ ๋ถ์ฐํจ์ผ๋ก์จ ์๋ํฉ๋๋ค. MapReduce ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ด๋ฌํ ์กฐ๊ฐ๋ค์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํฉ๋๋ค. Map ๋จ๊ณ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ์์ผ๋ก ๋ณํํ๊ณ , Reduce ๋จ๊ณ๋ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ์ง๊ณํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ ๋จ์ด์ ๋ฐ์ ํ์๋ฅผ ์ธ๊ธฐ ์ํด ๋์ฉ๋ ๋ก๊ทธ ํ์ผ์ ์ฒ๋ฆฌํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. Map ๋จ๊ณ๋ ํ์ผ์ ๋ ์์ ์กฐ๊ฐ์ผ๋ก ๋ถํ ํ๊ณ ๊ฐ ์กฐ๊ฐ์ ๋ค๋ฅธ ๋ ธ๋์ ํ ๋นํฉ๋๋ค. ๊ฐ ๋ ธ๋๋ ํด๋น ์กฐ๊ฐ์์ ๊ฐ ๋จ์ด์ ๋ฐ์ ํ์๋ฅผ ์ธ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํค-๊ฐ ์(๋จ์ด, ํ์)์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. Reduce ๋จ๊ณ๋ ๋ชจ๋ ๋ ธ๋์์ ๊ฐ ๋จ์ด์ ๋ํ ํ์๋ฅผ ์ง๊ณํฉ๋๋ค.
Hadoop์ ์ฅ์
- ํ์ฅ์ฑ: Hadoop์ ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ํํ๋ฐ์ดํธ ๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: HDFS๋ ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ์ผ๋ถ ๋ ธ๋๊ฐ ์คํจํ๋๋ผ๋ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋น์ฉ ํจ์จ์ฑ: Hadoop์ ์ผ๋ฐ ํ๋์จ์ด์์ ์คํ๋ ์ ์์ด ์ธํ๋ผ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
- ์คํ ์์ค: Hadoop์ ์คํ ์์ค ํ๋ ์์ํฌ์ด๋ฏ๋ก ๋ฌด๋ฃ๋ก ์ฌ์ฉํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
Hadoop์ ๋จ์
- ์ง์ฐ ์๊ฐ: MapReduce๋ ๋ฐฐ์น ์ฒ๋ฆฌ ํ๋ ์์ํฌ์ด๋ฏ๋ก ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ ํฉํ์ง ์์ต๋๋ค. Map ๋ฐ Reduce ๋จ๊ณ ์ฌ์ด์ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋์ด์ผ ํ๋ฏ๋ก ์๋นํ ์ง์ฐ ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค.
- ๋ณต์ก์ฑ: MapReduce ์์ ์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ณต์กํ๋ฉฐ ์ ๋ฌธ ๊ธฐ์ ์ ํ์๋ก ํฉ๋๋ค.
- ์ ํ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ: MapReduce๋ ์ฃผ๋ก ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ ์คํธ๋ฆฌ๋ฐ ๋๋ ๋ฐ๋ณต ์ฒ๋ฆฌ์ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ฝ๊ฒ ์ง์ํ์ง ์์ต๋๋ค.
Apache Spark ์๊ฐ: ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ์์ง
Spark๋ ๋ฌด์์ธ๊ฐ์?
Apache Spark๋ ๋น ๋ฐ์ดํฐ๋ฅผ ์ํด ์ค๊ณ๋ ๋น ๋ฅด๊ณ ๋ฒ์ฉ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ ์์ง์ ๋๋ค. ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ง์ ์ํฌ๋ก๋์์ Hadoop๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
Spark ์ํคํ ์ฒ
- Spark Core: ์์ ์ค์ผ์ค๋ง, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ๋ด๊ฒฐํจ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Spark์ ๊ธฐ๋ฐ์ ๋๋ค.
- Spark SQL: SQL ๋๋ DataFrame API๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๋ชจ๋์ ๋๋ค.
- Spark Streaming: ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ชจ๋์ ๋๋ค.
- MLlib (Machine Learning Library): ๋ถ๋ฅ, ํ๊ท, ํด๋ฌ์คํฐ๋ง๊ณผ ๊ฐ์ ์์ ์ ์ํ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- GraphX: ๊ทธ๋ํ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ ์ํ ๋ชจ๋์ ๋๋ค.
Spark ์๋ ๋ฐฉ์
Spark๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ ๋ณ๋ ฌ๋ก ๊ณ์ฐ์ ์ํํจ์ผ๋ก์จ ์๋ํฉ๋๋ค. RDD(Resilient Distributed Datasets)๋ผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋๋ฐ, ์ด๋ ํด๋ฌ์คํฐ์ ์ฌ๋ฌ ๋ ธ๋์ ๋ถ์ฐ๋ ์ ์๋ ๋ถ๋ณ์ ๋ถํ ๋ ๋ฐ์ดํฐ ๋ชจ์์ ๋๋ค.
Spark๋ ๋ฐฐ์น ์ฒ๋ฆฌ, ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ๋ฐ ๋ฐ๋ณต ์ฒ๋ฆฌ๋ฅผ ํฌํจํ ๋ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค. ๋ํ Scala, Java, Python ๋ฐ R๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํ ํ๋ถํ API ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐ๋ณต์ ์ธ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์ญ์์ค. Spark๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ ๋ค์, ๋งค๋ฒ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ์ ์์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋ฌ ๋ฐ๋ณต์ ์ํํ ์ ์์ต๋๋ค.
Spark์ ์ฅ์
- ์๋: Spark์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ํนํ ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ ๋ง์ ์ํฌ๋ก๋์์ Hadoop๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
- ์ฌ์ฉ ํธ์์ฑ: Spark๋ ์ฌ๋ฌ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํ ํ๋ถํ API ์ธํธ๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ๋ค์ฉ๋: Spark๋ ๋ฐฐ์น ์ฒ๋ฆฌ, ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ๋ฐ ๋จธ์ ๋ฌ๋์ ํฌํจํ ๋ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค.
- ์ค์๊ฐ ์ฒ๋ฆฌ: Spark Streaming์ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์์ค์ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Spark์ ๋จ์
- ๋น์ฉ: Spark์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ๋ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๋ฏ๋ก ์ธํ๋ผ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ํฌ๊ธฐ ์ ํ: Spark๋ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ง ์์ผ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
- ๋ณต์ก์ฑ: ์ฑ๋ฅ์ ์ํด Spark ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๋ ๊ฒ์ ๋ณต์กํ๋ฉฐ ์ ๋ฌธ ๊ธฐ์ ์ ํ์๋ก ํฉ๋๋ค.
Spark vs. Hadoop: ์์ธ ๋น๊ต
์ํคํ ์ฒ
Hadoop: ์ ์ฅ์๋ HDFS๋ฅผ, ์ฒ๋ฆฌ์๋ MapReduce๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ MapReduce ์์ ์ฌ์ด์ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์์ ์ฝํ๊ณ ๊ธฐ๋ก๋ฉ๋๋ค.
Spark: ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ์ RDD๋ฅผ ๋ฐ์ดํฐ ์ ์ฅ์ ํ์ฉํฉ๋๋ค. ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํ ์ ์์ด ์ง์ฐ ์๊ฐ์ ์ค์ ๋๋ค.
์ฑ๋ฅ
Hadoop: ๋ฐ๋ณต ์์ ๊ฐ์ ๋์คํฌ I/O๋ก ์ธํด ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ์๋ ์๋๊ฐ ๋๋ฆฝ๋๋ค.
Spark: ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ํํ ๋ฐ์ดํฐ ๋ถ์์ ํจ์ฌ ๋น ๋ฆ ๋๋ค.
์ฌ์ฉ ํธ์์ฑ
Hadoop: MapReduce๋ ์ ๋ฌธ ๊ธฐ์ ์ด ํ์ํ๋ฉฐ ๊ฐ๋ฐ์ด ๋ณต์กํ ์ ์์ต๋๋ค.
Spark: ์ฌ๋ฌ ์ธ์ด์ ๋ํ ํ๋ถํ API ์ธํธ๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก
Hadoop: ๋ก๊ทธ ๋ถ์, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ง, ETL(์ถ์ถ, ๋ณํ, ๋ก๋) ์์ ๊ณผ ๊ฐ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ฐฐ์น ์ฒ๋ฆฌ์ ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ ๊ฐ์ ํ๋งค ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์๋ณ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
Spark: ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋จธ์ ๋ฌ๋, ๊ทธ๋ํ ์ฒ๋ฆฌ ๋ฐ ๋ํํ ๋ฐ์ดํฐ ๋ถ์์ ์ด์์ ์ ๋๋ค. ์ฌ์ฉ ์ฌ๋ก๋ก๋ ๊ธ์ต ๊ฑฐ๋์ ์ค์๊ฐ ์ฌ๊ธฐ ํ์ง ๋๋ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ๊ฐ์ธํ๋ ์ถ์ฒ์ด ์์ต๋๋ค.
๋ด๊ฒฐํจ์ฑ
Hadoop: HDFS์ ๋ฐ์ดํฐ ๋ณต์ ๋ฅผ ํตํด ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํฉ๋๋ค.
Spark: RDD lineage๋ฅผ ํตํด ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ฅผ ํตํด Spark๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ์์ ์ ๋ค์ ์ฌ์ํจ์ผ๋ก์จ ์์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋น์ฉ
Hadoop: ์ผ๋ฐ ํ๋์จ์ด์์ ์คํ๋ ์ ์์ด ์ธํ๋ผ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
Spark: ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๋ฏ๋ก ์ธํ๋ผ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
์์ฝํ
๋ค์์ Spark์ Hadoop์ ์ฃผ์ ์ฐจ์ด์ ์ ๊ฐ์กฐํ๋ ์์ฝํ์ ๋๋ค:
| ํน์ง | Apache Hadoop | Apache Spark |
|---|---|---|
| ์ํคํ ์ฒ | HDFS + MapReduce + YARN | Spark Core + Spark SQL + Spark Streaming + MLlib + GraphX |
| ์ฒ๋ฆฌ ๋ชจ๋ธ | ๋ฐฐ์น ์ฒ๋ฆฌ | ๋ฐฐ์น ์ฒ๋ฆฌ, ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ, ๋จธ์ ๋ฌ๋, ๊ทธ๋ํ ์ฒ๋ฆฌ |
| ์ฑ๋ฅ | ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ๋๋ฆผ | ๋ฐ๋ณต ์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๋น ๋ฆ |
| ์ฌ์ฉ ํธ์์ฑ | ๋ณต์กํ MapReduce ํ๋ก๊ทธ๋๋ฐ | ๋ค๊ตญ์ด ํ๋ถํ API๋ก ๋ ์ฌ์ |
| ๋ด๊ฒฐํจ์ฑ | HDFS ๋ฐ์ดํฐ ๋ณต์ | RDD Lineage |
| ๋น์ฉ | ๋ฎ์ (์ผ๋ฐ ํ๋์จ์ด) | ๋์ (๋ฉ๋ชจ๋ฆฌ ์ง์ฝ์ ) |
์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ค์ ์ฌ๋ก
Hadoop ์ฌ์ฉ ์ฌ๋ก
- ๋ก๊ทธ ๋ถ์: ๋๋์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ํจํด๊ณผ ์ถ์ธ๋ฅผ ์๋ณํฉ๋๋ค. ๋ง์ ๊ธ๋ก๋ฒ ๊ธฐ์ ๋ค์ด ์น ์๋ฒ ๋ก๊ทธ, ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ, ๋ณด์ ๋ก๊ทธ๋ฅผ ๋ถ์ํ๊ธฐ ์ํด Hadoop์ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ง: ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๋ฐ ๋ณด๊ณ ๋ฅผ ์ํด ๋๋์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธ์ต ๊ธฐ๊ด์ ๊ท์ ์ค์ ๋ฐ ๊ฑฐ๋ ๋ฐ์ดํฐ์์ ํต์ฐฐ๋ ฅ์ ์ป๊ธฐ ์ํด ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ง์ Hadoop์ ํ์ฉํฉ๋๋ค.
- ETL (Extract, Transform, Load): ๋ค์ํ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , ์ผ๊ด๋ ํ์์ผ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ก๋ํฉ๋๋ค. ๊ธ๋ก๋ฒ ์๋งค์ ์ฒด๋ ๋ค์ํ ํ๋งค ์ฑ๋ ๋ฐ ์ฌ๊ณ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ๊ธฐ ์ํด Hadoop์ ETL ํ๋ก์ธ์ค์ ์ฌ์ฉํฉ๋๋ค.
Spark ์ฌ์ฉ ์ฌ๋ก
- ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ์ผ์, ์์ ๋ฏธ๋์ด, ๊ธ์ต ์์ฅ๊ณผ ๊ฐ์ ์์ค์์ ์ค๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํฉ๋๋ค. ํต์ ํ์ฌ๋ค์ Spark Streaming์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๊ณ ์ด์ ์งํ๋ฅผ ๊ฐ์งํฉ๋๋ค.
- ๋จธ์ ๋ฌ๋: ์ฌ๊ธฐ ํ์ง, ์ถ์ฒ ์์คํ , ์์ธก ๋ถ์๊ณผ ๊ฐ์ ์์ ์ ์ํ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํฉ๋๋ค. ์๋ฃ ์๋น์ค ์ ๊ณต์ ์ฒด๋ Spark MLlib์ ์ฌ์ฉํ์ฌ ํ์ ๊ฒฐ๊ณผ ๋ฐ ๋ฆฌ์์ค ํ ๋น์ ์ํ ์์ธก ๋ชจ๋ธ์ ๊ตฌ์ถํฉ๋๋ค.
- ๊ทธ๋ํ ์ฒ๋ฆฌ: ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ๊ด๊ณ์ ํจํด์ ์๋ณํฉ๋๋ค. ์์ ๋ฏธ๋์ด ํ์ฌ๋ค์ Spark GraphX๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋คํธ์ํฌ๋ฅผ ๋ถ์ํ๊ณ ์ํฅ๋ ฅ ์๋ ์ฌ์ฉ์๋ฅผ ์๋ณํฉ๋๋ค.
- ๋ํํ ๋ฐ์ดํฐ ๋ถ์: ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ํ ๋ํํ ์ฟผ๋ฆฌ ๋ฐ ๋ถ์์ ์ํํฉ๋๋ค. ๋ฐ์ดํฐ ๊ณผํ์๋ค์ Spark SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ ์ดํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ณ ๋ถ์ํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ํ๋ ์์ํฌ ์ ํ: Hadoop ๋๋ Spark?
Hadoop๊ณผ Spark ์ค ์ด๋ค ๊ฒ์ ์ ํํ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ค์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ํ์๋ก ํ๋ค๋ฉด Hadoop์ผ๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋จธ์ ๋ฌ๋ ๋๋ ๊ทธ๋ํ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค๋ฉด Spark๊ฐ ๋ ๋์ ์ ํ์ ๋๋ค.
- ์ฑ๋ฅ ์๊ตฌ ์ฌํญ: ์ฑ๋ฅ์ด ์ค์ํ๋ค๋ฉด Spark์ ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ด ์๋นํ ์ด์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ ํธ์์ฑ: Spark์ ํ๋ถํ API์ ๋ค๊ตญ์ด ์ง์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ๋น์ฉ ๊ณ ๋ ค ์ฌํญ: Hadoop์ ์ผ๋ฐ ํ๋์จ์ด์์ ์คํ๋ ์ ์์ด ์ธํ๋ผ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค. Spark๋ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๋ฏ๋ก ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
- ๊ธฐ์กด ์ธํ๋ผ: ์ด๋ฏธ Hadoop ํด๋ฌ์คํฐ๊ฐ ์๋ค๋ฉด Spark๋ฅผ YARN๊ณผ ํตํฉํ์ฌ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
๋ง์ ๊ฒฝ์ฐ ์กฐ์ง์ Hadoop๊ณผ Spark๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. Hadoop์ HDFS์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, Spark๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ฏธ๋ ๋ํฅ
๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ถ์ผ๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ์ฃผ์ํด์ผ ํ ์ฃผ์ ๋ํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Kubernetes ๋ฐ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ๊ณผ ๊ฐ์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ธฐ์ ์ ์ฑํ. ์ด๋ ๋ ํฐ ํ์ฅ์ฑ, ์ ์ฐ์ฑ ๋ฐ ๋น์ฉ ํจ์จ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์ค์๊ฐ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ: ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ง, ์ฒ๋ฆฌ ๋ฐ ๋ถ์ํ ์ ์๋ ์ค์๊ฐ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ฐ๋ฐ. ์ด๋ ์ค์๊ฐ ํต์ฐฐ๋ ฅ ๋ฐ ์์ฌ ๊ฒฐ์ ์ ๋ํ ์์ ์ฆ๊ฐ์ ์ํด ์ฃผ๋๋ฉ๋๋ค.
- AI ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ์ธ๊ณต์ง๋ฅ(AI) ๋ฐ ๋จธ์ ๋ฌ๋(ML) ํตํฉ. ์ด๋ ์๋ํ๋ ๋ฐ์ดํฐ ํ์ง ๊ฒ์ฌ, ์ด์ ํ์ง ๋ฐ ์์ธก ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ฃ์ง ์ปดํจํ : ๋ฐ์ดํฐ๋ฅผ ์์ค์ ๋ ๊ฐ๊น๊ฒ ์ฒ๋ฆฌํ์ฌ ์ง์ฐ ์๊ฐ ๋ฐ ๋์ญํญ ์๊ตฌ ์ฌํญ ๊ฐ์. ์ด๋ IoT ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋คํธ์ํฌ ์ฃ์ง์์ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ ๊ธฐํ ์๋๋ฆฌ์ค์ ํนํ ๊ด๋ จ์ด ์์ต๋๋ค.
- ๋ฐ์ดํฐ ๋ฉ์ ์ํคํ ์ฒ: ๋ฐ์ดํฐ ์์ ๊ถ ๋ฐ ๊ฑฐ๋ฒ๋์ค์ ๋ํ ๋ถ์ฐ ์ ๊ทผ ๋ฐฉ์, ๋ฐ์ดํฐ๊ฐ ์ ํ์ผ๋ก ์ทจ๊ธ๋๊ณ ๊ฐ ๋๋ฉ์ธ์ด ์์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฑ ์์ง๋๋ค. ์ด๋ ๋ฐ์ดํฐ ๋ฏผ์ฒฉ์ฑ ๋ฐ ํ์ ์ ์ด์งํฉ๋๋ค.
๊ฒฐ๋ก
Apache Spark์ Hadoop์ ๋ชจ๋ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋๋ค. Hadoop์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ์ํ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด๋ฉฐ, Spark๋ ๋ ๋น ๋ฅธ ์ธ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ๋ ๋์ ๋ฒ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค. ๋ ์ค ์ด๋ค ๊ฒ์ ์ ํํ ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ฐ ํ๋ ์์ํฌ์ ๊ฐ์ ๊ณผ ์ฝ์ ์ ์ดํดํจ์ผ๋ก์จ ๊ทํ์ ํ์์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ์ ์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
๋ฐ์ดํฐ์ ์, ์๋ ๋ฐ ๋ค์์ฑ์ด ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋ฃจ์ ์ ๋ํ ์์๋ ๋์ฑ ์ฆ๊ฐํ ๊ฒ์ ๋๋ค. ์ต์ ๋ํฅ๊ณผ ๊ธฐ์ ์ ์ง์์ ์ผ๋ก ํ์ ํจ์ผ๋ก์จ ์กฐ์ง์ ๋น ๋ฐ์ดํฐ์ ํ์ ํ์ฉํ์ฌ ๊ฒฝ์ ์ฐ์๋ฅผ ํ๋ณดํ๊ณ ํ์ ์ ์ฃผ๋ํ ์ ์์ต๋๋ค.