Apache Spark ๋?
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ถ์ฐ ์ปดํจํ
ํ๋ ์์ํฌ
- ์ฌ๋ฌ๋์ ์ปดํจํฐ๋ฅผ ๋ฌถ์ด ํ๋์ ๊ฑฐ๋ํ ์ฐ์ฐ ์ฅ๋น์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค์ด ๋น
๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ์ํ๊ณ ์ฒ๋ฆฌ ๊ฐ๋ฅ
Apache Spark ํต์ฌ ๊ฐ๋
- ๋ถ์ฐ ์ฒ๋ฆฌ (Distributed Computing)
- Spark๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋
ธ๋๋ก ๋๋ ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋จ์ผ์๋ฒ๋ณด๋ค ๋น ๋ฅธ ์๋๋ก ๋ถ์์ด ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ฒ๋ฆฌ (In-Memory Computing)
- Spark๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ ์ฅํ ์ฑ๋ก ์ฐ์ฐ์ ์ด์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋น ๋ฆ
- RDD (Resilient Distributed Dataset)
- Spark์ ํต์ฌ ์๋ฃ๊ตฌ์กฐ
- RDD๋ ๋ถ์ฐ๋ ๋ฐ์ดํฐ์ ๋ถ๋ณํ ์ปฌ๋ ์
์ผ๋ก ๋ณ๋ ฌ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ฉฐ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ณต๊ตฌ ๊ฐ๋ฅํ ๊ตฌ์กฐ
Apache Spark ์ฃผ์ ๊ตฌ์ฑ์์
- Spark Core - RDD ๊ธฐ๋ฐ์ ๊ธฐ๋ณธ ์ฐ์ฐ ๊ธฐ๋ฅ (map, filter, reduce ๋ฑ)
- Spark SQL - SQL ๋ฌธ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ชจ๋
- Spark Streaming - ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ (Kafka ๋ฑ๊ณผ ์ฐ๊ณ)
- MLlib - ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (๋ถ๋ฅ, ํ๊ท, ํด๋ฌ์คํฐ๋ง ๋ฑ)
- GraphX - ๊ทธ๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ฉ API
Spark ์คํ๊ตฌ์กฐ
Driver Program
โโโ SparkContext (์์
์งํ์)
โโโ Cluster Manager (์์ ํ ๋น)
โโโ Worker Nodes
โ โโโ Executor (์ค์ ์์
์ํ)
โ โโโ Task (์คํ ๋จ์)
- Driver Program : Spark ์ ํ๋ฆฌ์ผ์ด์
์ ์์์ (ex : main() ํจ์)
- Cluster Manager : ํด๋ฌ์คํฐ์ ์์์ ๊ด๋ฆฌ (Kebernetes ๋ฑ)
- Executor : ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค
- Task : Executor ์์ ์คํ๋๋ ์ธ๋ถ ์ฐ์ฐ ๋จ์
Apache Spark ๊ฐ ์ฌ์ฉ๋๋ ๋ถ์ผ
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ (ETL)
- ๋ฐ์ดํฐ ๋ถ์
- ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๋ถ์
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ์ฐ๋
Spark vs Hadoop
| ๊ตฌ๋ถ |
Apache Spark |
Hadoop MapReduce |
| ์ฒ๋ฆฌ์๋ |
๋งค์ฐ ๋น ๋ฆ (In-Memory) |
๋๋ฆผ (Disk I/O ์ค์ฌ) |
| API |
๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ (Python, Java ์ง์) |
์๋์ ์ผ๋ก ๋ณต์ก |
| ์ค์๊ฐ ์ฒ๋ฆฌ |
๊ฐ๋ฅ (Streaming) |
๋ถ๊ฐ๋ฅ |
| ๋จธ์ ๋ฌ๋ ์ง์ |
๋ด์ฅ (MLlib) |
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ |
| ์ฅ์ ๋ณต๊ตฌ |
์๋ (RDD Lineage) |
์๋ ์ค์ ํ์ |