๐ฅ Apache Spark (์คํํฌ)
- ๋น ๋ฐ์ดํฐ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ๋ก, ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋จ.
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ฐ์ฐ์ ํ์ฉํ์ฌ ๊ธฐ์กด ํ๋ก(Hadoop)๋ณด๋ค ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ.
- PySpark(Python ๊ธฐ๋ฐ Spark API) ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ, ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๋จธ์ ๋ฌ๋ ์์ ์ ํ์ฉ๋จ.
- ํด๋ฌ์คํฐ ํ๊ฒฝ์์ ๋์ํ๋ฉฐ, ์ฌ๋ฌ ๋ ธ๋(์๋ฒ)์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํจ.
๐ง Linux (๋ฆฌ๋ ์ค)
- ์คํํฌ๋ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ ์๋ฒ์์ ์คํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์.
- ๋ฆฌ๋ ์ค๋ ๋ถ์ฐ ์ปดํจํ ํ๊ฒฝ์์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ด ๋ฐ์ด๋จ.
- Spark์ ์ค์น, ์คํ, ๋ฐฐํฌ(์: ํด๋ฌ์คํฐ ๊ด๋ฆฌ) ๊ณผ์ ์์ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ์ ์คํฌ๋ฆฝํธ(Bash, Zsh ๋ฑ)๊ฐ ํ์์ ์ผ๋ก ํ์ฉ๋จ.
โ AWS (Amazon Web Services)
AWS๋ ์คํํฌ ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํ๊ณ ์คํํ ์ ์๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ ๊ณตํจ. ์ฃผ์ ์ฐ๊ด ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ :
- EMR (Elastic MapReduce)
- AWS์์ ์ ๊ณตํ๋ ๋งค๋์ง๋ ์คํํฌ ์๋น์ค๋ก, ๋ณ๋์ ์ธํ๋ผ ๊ตฌ์ฑ ์์ด Spark ํด๋ฌ์คํฐ๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์.
- ๊ธฐ์กด ์จํ๋ ๋ฏธ์ค ํ๊ฒฝ ๋์ , AWS์์ ๋ฐ๋ก ์คํํ๋ ๊ฒฝ์ฐ ๋น์ฉ๊ณผ ์ด์ ๋ถ๋ด์ ์ค์ผ ์ ์์.
- Hadoop, Spark, Presto, Hive ๋ฑ์ ๋น ๋ฐ์ดํฐ ํ๋ ์์ํฌ๋ฅผ ์ง์ํจ.
- EC2 (Elastic Compute Cloud)
- ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ์ ๊ฐ์ ๋จธ์ (์ธ์คํด์ค)์ ์ ๊ณตํ๋ ์๋น์ค.
- ์ง์ EC2์ Spark๋ฅผ ์ค์นํ๊ณ ๊ตฌ์ฑํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ ์๋ ์์.
- S3 (Simple Storage Service)
- ์คํํฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ ์ฅ์ ์ญํ ์ ํ๋ ์๋น์ค.
- ์คํํฌ๋ ๋ณดํต HDFS(Hadoop Distributed File System)๋ฅผ ์ฌ์ฉํ์ง๋ง, AWS ํ๊ฒฝ์์๋ HDFS ๋์ S3๋ฅผ ๋ฐ์ดํฐ ๋ ์ดํฌ๋ก ํ์ฉํ ์ ์์.
- Glue
- AWS์์ ์ ๊ณตํ๋ ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ ์ค๋น ๋ฐ ๋ณํ ์๋น์ค๋ก, ๋ด๋ถ์ ์ผ๋ก Spark๋ฅผ ํ์ฉํจ.
- PySpark ๊ธฐ๋ฐ์ผ๋ก ETL(Extract, Transform, Load) ์์ ์ ์ํํ ์ ์์.
- Lambda & Step Functions
- AWS Lambda๋ฅผ ์ฌ์ฉํด **Spark ์์ ์ ํธ๋ฆฌ๊ฑฐ(์คํ)**ํ ์๋ ์์.
- Step Functions๋ฅผ ํ์ฉํ๋ฉด Spark ์์ ์ ์ํฌํ๋ก์ฐ๋ก ์๋ํ ๊ฐ๋ฅ.
๐ฏ ์คํํฌ - ๋ฆฌ๋ ์ค - AWS์ ๊ด๊ณ ์ ๋ฆฌ
- Spark๋ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ์คํ๋๋ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ์.
- AWS๋ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ์ ๊ฐ์ ์๋ฒ(EC2) ๋๋ ๋งค๋์ง๋ ์๋น์ค(EMR, Glue)๋ฅผ ํตํด Spark ํด๋ฌ์คํฐ๋ฅผ ์ฝ๊ฒ ์ด์ํ ์ ์๋๋ก ์ง์ํจ.
- Spark๋ AWS S3, DynamoDB ๊ฐ์ ์๋น์ค์ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๋ถ์ํ ์ ์์.
- AWS์ ๋งค๋์ง๋ ์๋น์ค(EMR, Glue ๋ฑ)๋ฅผ ํ์ฉํ๋ฉด ๋ฆฌ๋ ์ค ์๋ฒ๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์ ์์ด Spark๋ฅผ ์คํํ ์ ์์.
์ฆ, ๋ฆฌ๋ ์ค๋ Spark๋ฅผ ๊ตฌ๋ํ๋ ์ด์์ฒด์ ์ญํ , AWS๋ Spark๋ฅผ ํด๋ผ์ฐ๋์์ ์ฝ๊ฒ ์คํํ ์ ์๋๋ก ์ง์ํ๋ ์ญํ ์ ํ๋ค๊ณ ํ๋ค์!
๊ทธ๋ ๋ค๋ฉด...
"๋ฆฌ๋
์ค ์ด์์ฒด์ ๋ฅผ ๋ AWS ์๋ฒ(์ ์ฅ๊ณต๊ฐ)์์ Spark ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค๋ ๊ฑธ๊น?"
๐ง๐ซ๊ฑฐ์ ๋ง๋ ๋ง์ด์ง๋ง, ์กฐ๊ธ ๋ ์ ํํ๊ฒ ํํํ๋ฉด ์ด๋ ๊ฒ ์ ๋ฆฌํ ์ ์์ด์:
AWS์์ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ๊ฐ ์ค์น๋ ์๋ฒ(EC2 ๋๋ EMR)๋ฅผ ์คํํ๊ณ , ๊ทธ ์์์ Spark๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ํ, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ S3 ๊ฐ์ ์คํ ๋ฆฌ์ง ์๋น์ค๋ฅผ ํ์ฉํ ์๋ ์๋ค.
๐ ๋ ์ ํํ ๊ฐ๋ ์ ๋ฆฌ
- AWS ์๋ฒ(EC2, EMR)์์ ๋ฆฌ๋
์ค๋ฅผ ์คํ
- AWS์์ ์ ๊ณตํ๋ ์๋ฒ(EC2 ๋๋ EMR)๋ ๋๋ถ๋ถ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋จ.
- ์: Ubuntu, Amazon Linux, CentOS ๋ฑ.
- Spark๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- Spark๋ ๋ถ์ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ ์์ํฌ์ด๋ฏ๋ก, ์ฌ๋ฌ ๋์ ๋ฆฌ๋ ์ค ์๋ฒ(๋ ธ๋)๋ฅผ ๋ฌถ์ด ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ.
- AWS์์๋ EMR(Elastic MapReduce) ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ Spark ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์.
- PySpark๋ฅผ ์ฌ์ฉํ๋ฉด Python ์ฝ๋๋ก Spark ์์ ์ ์คํ ๊ฐ๋ฅ.
- ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์(S3 vs. HDFS vs. ๋ก์ปฌ ํ์ผ ์์คํ
)
- Spark๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ ๋ค์ํ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ ์ ์์.
- AWS ํ๊ฒฝ์์๋ ๋ณดํต S3๋ฅผ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ฌ์ฉํจ. (HDFS๋ฅผ ๋์ฒด)
- ๋ง์ฝ ์จํ๋ ๋ฏธ์ค(์์ฒด ์๋ฒ) ํ๊ฒฝ์ด๋ผ๋ฉด, HDFS(Hadoop Distributed File System)๋ ๋ก์ปฌ ํ์ผ ์์คํ ์ ์ฌ์ฉํ ์๋ ์์.
โ ์ข ๋ ์ ํํ ํํ
"AWS์์ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ๋ฅผ ์คํํ๋ ์๋ฒ(EC2 ๋๋ EMR)๋ฅผ ์ฌ์ฉํ๊ณ , ๊ทธ ์์์ Spark๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ์ ์ฅ ๊ณต๊ฐ์ผ๋ก๋ ์ฃผ๋ก S3๋ฅผ ํ์ฉํ๋ค."
์ด๋ ๊ฒ ํํํ๋ฉด ๋ ์ ํํฉ๋๋ค!
์ฆ, Spark ์์ฒด๊ฐ ์ ์ฅ์ ์ญํ ์ ํ์ง๋ ์๊ณ , ๋ฐ์ดํฐ๋ฅผ Spark๋ก ์ฒ๋ฆฌํ ํ S3, HDFS, ๋๋ ๋ค๋ฅธ ์ ์ฅ์์ ์ ์ฅํ๋ ๊ฐ๋
์ด๋ผ๊ณ ํ๋ค์. ๐